NetworkMessage->GetData fixed
Plugin -> Splitted message types
PluginManager is now thread safe
TcpConnection added list of events
Properly handling disconnection now
Fixed bug in Socket with error translation
It crashes when it exits, i think it has something to do with shared ptrs or something
This commit is contained in:
TheDoctor
2019-10-21 00:27:21 +01:00
parent 3555534628
commit 5f13265c5d
15 changed files with 223 additions and 107 deletions

View File

@ -21,30 +21,55 @@ namespace std::net
bool Connect(IPAddress addr);
bool Disconnect();
template<typename T>
void SendMessage(DistributionMode mode, uint32_t destinationId, uint32_t tag, void *data)
bool SendMessage(DistributionMode mode, uint32_t destinationId, uint32_t tag, void *data)
{
NetworkMessage msg(m_id, mode, destinationId, tag, data, sizeof(T));
sendMessage(msg);
return sendMessage(msg);
}
void SendMessage(DistributionMode mode, uint32_t destinationId, uint32_t tag)
bool SendMessage(DistributionMode mode, uint32_t destinationId, uint32_t tag)
{
NetworkMessage msg(m_id, mode, destinationId, tag, nullptr, 0);
sendMessage(msg);
return sendMessage(msg);
}
void ReceiveData();
function<void(uint32_t, DistributionMode, uint32_t, uint32_t, void*)> DataReceivedEvent;
function<void(string)> DisconnectedEvent;
function<void(uint32_t, void*)> NewConnectionEvent;
function<void()> OnConnectionEvent;
bool IsConnected;
private:
bool sendMessage(const NetworkMessage &msg);
shared_ptr<TcpClient> m_client;
uint32_t m_id;
vector<function<void(uint32_t, DistributionMode, uint32_t, uint32_t, void*)>> m_onDataReceived;
vector<function<void(string)>> m_onDisconnect;
vector<function<void(uint32_t, void*)>> m_onNewConnection;
vector<function<void()>> m_onConnection;
public:
void operator+=(const function<void(uint32_t, DistributionMode, uint32_t, uint32_t, void*)> &rhs)
{
m_onDataReceived.push_back(rhs);
}
void operator+=(const function<void(string)>& rhs)
{
m_onDisconnect.push_back(rhs);
}
void operator+=(const function<void(uint32_t, void*)> & rhs)
{
m_onNewConnection.push_back(rhs);
}
void operator+=(const function<void()>& rhs)
{
m_onConnection.push_back(rhs);
}
};
}