mirror of
https://github.com/eclipse-openvehicle-api/openvehicle-api.git
synced 2026-08-30 12:15:12 +00:00
connection between 2 systems and bug fixes (#14)
This commit is contained in:
58
sdv_services/uds_unix_tunnel/watchdog.cpp
Normal file
58
sdv_services/uds_unix_tunnel/watchdog.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
/********************************************************************************
|
||||
* Copyright (c) 2025-2026 ZF Friedrichshafen AG
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Apache License Version 2.0 which is available at
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Contributors:
|
||||
* Denisa Ros - initial API and implementation
|
||||
********************************************************************************/
|
||||
|
||||
#if defined(__unix__)
|
||||
|
||||
#include "watchdog.h"
|
||||
|
||||
void CUnixTunnelConnectionWatchDog::AddConnectionImpl(const std::shared_ptr<void>& connection)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_Mutex);
|
||||
m_Connections[connection.get()] = connection;
|
||||
}
|
||||
|
||||
void CUnixTunnelConnectionWatchDog::RemoveConnection(const void* connection)
|
||||
{
|
||||
if (!connection)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
std::shared_ptr<void> removed;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_Mutex);
|
||||
auto it = m_Connections.find(connection);
|
||||
if (it == m_Connections.end())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
removed = std::move(it->second);
|
||||
m_Connections.erase(it);
|
||||
}
|
||||
|
||||
removed.reset();
|
||||
}
|
||||
|
||||
void CUnixTunnelConnectionWatchDog::Clear()
|
||||
{
|
||||
std::map<const void*, std::shared_ptr<void>> localConnections;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(m_Mutex);
|
||||
localConnections.swap(m_Connections);
|
||||
}
|
||||
|
||||
localConnections.clear();
|
||||
}
|
||||
|
||||
#endif // defined(__unix__)
|
||||
Reference in New Issue
Block a user