diff --git a/src/net/connection/WowConnectionNet.cpp b/src/net/connection/WowConnectionNet.cpp index af44643..1bff3e1 100644 --- a/src/net/connection/WowConnectionNet.cpp +++ b/src/net/connection/WowConnectionNet.cpp @@ -35,7 +35,15 @@ void WowConnectionNet::Delete(WowConnection* connection) { } void WowConnectionNet::Remove(WowConnection* connection) { - // TODO + this->m_connectionsLock.Enter(); + + if (this->m_connections.IsLinked(connection)) { + this->m_connections.UnlinkNode(connection); + } + + this->PlatformRemove(connection); + + this->m_connectionsLock.Leave(); } void WowConnectionNet::Run() { diff --git a/src/net/connection/WowConnectionNet.hpp b/src/net/connection/WowConnectionNet.hpp index 6da04bc..00fd6b1 100644 --- a/src/net/connection/WowConnectionNet.hpp +++ b/src/net/connection/WowConnectionNet.hpp @@ -42,6 +42,7 @@ class WowConnectionNet { void PlatformAdd(WowConnection* connection); void PlatformChangeState(WowConnection* connection, WOW_CONN_STATE state); void PlatformInit(bool useEngine); + void PlatformRemove(WowConnection* connection); void PlatformRun(); void PlatformWorkerReady(); void Remove(WowConnection* connection); diff --git a/src/net/connection/WowConnectionNetMac.cpp b/src/net/connection/WowConnectionNetMac.cpp index 13de64d..8c7b073 100644 --- a/src/net/connection/WowConnectionNetMac.cpp +++ b/src/net/connection/WowConnectionNetMac.cpp @@ -31,6 +31,11 @@ void WowConnectionNet::PlatformInit(bool useEngine) { // TODO } +void WowConnectionNet::PlatformRemove(WowConnection* connection) { + char buf = '\1'; + write(s_workerPipe[1], &buf, sizeof(buf)); +} + void WowConnectionNet::PlatformRun() { pipe(s_workerPipe); diff --git a/src/net/connection/WowConnectionNetWin.cpp b/src/net/connection/WowConnectionNetWin.cpp index f5e2d55..c1af37e 100644 --- a/src/net/connection/WowConnectionNetWin.cpp +++ b/src/net/connection/WowConnectionNetWin.cpp @@ -14,6 +14,10 @@ void WowConnectionNet::PlatformInit(bool useEngine) { // TODO } +void WowConnectionNet::PlatformRemove(WowConnection* connection) { + // TODO +} + void WowConnectionNet::PlatformRun() { // TODO }