MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ close_endpoint()

void MayaFlux::Core::UDPBackend::close_endpoint ( uint64_t  endpoint_id)
overridevirtual

Close an endpoint and release its resources.

Parameters
endpoint_idEndpoint to close. No-op if already closed.

Implements MayaFlux::Core::INetworkBackend.

Definition at line 139 of file UDPBackend.cpp.

140{
141 std::unique_lock lock(m_endpoints_mutex);
142 auto it = m_endpoints.find(endpoint_id);
143 if (it == m_endpoints.end()) {
144 return;
145 }
146
147 uint16_t local_port = it->second.socket_state->local_port;
148
149 EndpointState prev = it->second.info.state;
150 it->second.info.state = EndpointState::CLOSED;
151
152 m_endpoints.erase(it);
153 lock.unlock();
154
155 release_socket(local_port);
156
158 "UDP endpoint {} closed", endpoint_id);
159}
#define MF_DEBUG(comp, ctx,...)
void release_socket(uint16_t local_port)
Decrement ref_count for a socket.
std::unordered_map< uint64_t, EndpointRecord > m_endpoints
std::shared_mutex m_endpoints_mutex
EndpointState
Observable connection state for an endpoint.
@ NetworkBackend
Network transport backend (UDP, TCP, SHM)
@ Core
Core engine, backend, subsystems.

References MayaFlux::Core::CLOSED, MayaFlux::Journal::Core, m_endpoints, m_endpoints_mutex, MF_DEBUG, MayaFlux::Journal::NetworkBackend, and release_socket().

+ Here is the call graph for this function: