MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / removeClient

Method removeClient

source/game/StarWorldServerThread.cpp:85–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83}
84
85List<PacketPtr> WorldServerThread::removeClient(ConnectionId clientId) {
86 RecursiveMutexLocker locker(m_mutex);
87 if (!m_clients.contains(clientId))
88 return {};
89
90 RecursiveMutexLocker queueLocker(m_queueMutex);
91
92 List<PacketPtr> outgoingPackets;
93 try {
94 auto incomingPackets = take(m_incomingPacketQueue[clientId]);
95 if (m_worldServer->hasClient(clientId))
96 m_worldServer->handleIncomingPackets(clientId, std::move(incomingPackets));
97
98 outgoingPackets = take(m_outgoingPacketQueue[clientId]);
99 if (m_worldServer->hasClient(clientId))
100 outgoingPackets.appendAll(m_worldServer->removeClient(clientId));
101
102 } catch (std::exception const& e) {
103 Logger::error("WorldServerThread exception caught: {}", outputException(e, true));
104 m_errorOccurred = true;
105 }
106
107 m_clients.remove(clientId);
108 m_incomingPacketQueue.remove(clientId);
109 m_outgoingPacketQueue.remove(clientId);
110 return outgoingPackets;
111}
112
113List<ConnectionId> WorldServerThread::clients() const {
114 RecursiveMutexLocker locker(m_mutex);

Callers 1

updateMethod · 0.45

Calls 8

takeFunction · 0.85
errorFunction · 0.85
appendAllMethod · 0.80
outputExceptionFunction · 0.50
containsMethod · 0.45
hasClientMethod · 0.45
handleIncomingPacketsMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected