Removed old callbacks

Implemented new callback methods
Made ReceiveData renamed to ReceiveMessages, returns void amd calls the callback methods
This commit is contained in:
xX-TheDoctor-Xx
2016-07-18 21:48:34 +01:00
parent a1249ab5e9
commit b42b26cada
15 changed files with 39 additions and 65 deletions

View File

@ -86,6 +86,6 @@ const NetworkMessage &NetworkMessage::DecodeMessageHeader(const NetworkBuffer &b
tag = buffer.body[6];
subject = Utility::BitConverter::ToUint16(buffer.body, 7);
this->buffer = buffer;
valid = sender != -2 && tag != CONNECT && tag != DISCONNECT;
valid = sender != -2 && tag != CONNECT && tag != DISCONNECT && distribution_mode > 0;
return *this;
}

View File

@ -2,7 +2,6 @@
#include "Utility.hpp"
#include "Config.hpp"
#include "NetworkBuffer.hpp"
#include "Callbacks.hpp"
#include "Tags.hpp"
#include <iostream>
@ -99,9 +98,11 @@ VoidCode TcpClient::Connect()
uint16 connect_code = ::connect(tcp_socket, ptr->ai_addr, ptr->ai_addrlen);
if (connect_code == SOCKET_ERROR)
return VOID_COULDNT_CONNECT;
receive = true;
return VOID_SUCCESS;
}
NetworkBuffer TcpClient::ReceiveDataArray()
const NetworkBuffer &TcpClient::ReceiveDataArray()
{
NetworkBuffer buffer;
@ -110,7 +111,6 @@ NetworkBuffer TcpClient::ReceiveDataArray()
if (header_received != 4 || WSAGetLastError() != 0) // this header is completely unrelated to the network message header - this header is the body size of the network message
{
// there was a problem receiving the body size of the message or theres no header to receive
return NetworkBuffer();
}
buffer.body = new byte[buffer.body_size]();
@ -118,22 +118,31 @@ NetworkBuffer TcpClient::ReceiveDataArray()
if (body_received == SOCKET_ERROR || body_received != buffer.body_size || WSAGetLastError() != 0)
{
//there was a problem receiving the body of the message or theres no body to receive
return NetworkBuffer();
}
return buffer;
}
const NetworkMessage &TcpClient::ReceiveData()
void TcpClient::ReceiveData(TcpClient *client)
{
NetworkMessage message(ReceiveDataArray());
if (message.tag == CONNECT)
OnConnect(message.sender);
else if (message.tag == DISCONNECT)
OnDisconnect(message.sender);
else
OnMessage(message.sender, message.tag, message.subject, message.data);
return message;
while (client->receive)
{
NetworkMessage message(client->ReceiveDataArray());
if (message.valid)
{
if (message.tag == CONNECT) // some user has connected
client->OnConnect(message.sender);
else if (message.tag == DISCONNECT) // some user has disconnected
client->OnDisconnect(message.sender);
else
client->OnMessage(message.sender, message.tag, message.subject, message.data); // we received data
}
}
}
void TcpClient::ReceiveMessages()
{
std::async(std::launch::async, &ReceiveData, this);
}
void TcpClient::SendNetworkMessage(const NetworkMessage &message, TcpClient *client)

View File

@ -56,19 +56,7 @@ void VoidNetClientAPI::Receive()
void VoidNetClientAPI::ProcessAllData()
{
while (receive)
{
NetworkMessage message = client->ReceiveDataArray();
if (message.valid)
{
if (message.tag == CONNECT)
OnConnect(message.sender);
else if (message.tag == DISCONNECT)
OnDisconnect(message.sender);
else
OnMessage(message.sender, message.tag, message.subject, message.data);
}
}
client->ReceiveMessages();
}
void VoidNetClientAPI::Disconnect()