TcpServer's OnMessage is now an vector called OnMessageFunctions, each plugin will occupy an index in this vector
Readded receive_data method to VoidNetClient.hpp Minor fixes
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -7,6 +7,7 @@ | |||||||
|  |  | ||||||
| #include "Defs.hpp" | #include "Defs.hpp" | ||||||
| #include "TcpClient.hpp" | #include "TcpClient.hpp" | ||||||
|  | #include "Handshake.hpp" | ||||||
|  |  | ||||||
| #include <functional> | #include <functional> | ||||||
|  |  | ||||||
| @ -38,7 +39,7 @@ public: | |||||||
|  |  | ||||||
| 	const TcpClient &GetClientByID(uint16 id); | 	const TcpClient &GetClientByID(uint16 id); | ||||||
|  |  | ||||||
| 	std::function<void(const NetworkMessage &message)> OnMessage; // this is going to be used for plugins | 	std::vector<std::function<void(const NetworkMessage &message)>> OnMessageFunctions; // this is going to be used for plugins | ||||||
|  |  | ||||||
| private: | private: | ||||||
| 	static void process_client_messages(TcpServer *server, TcpClient &client); | 	static void process_client_messages(TcpServer *server, TcpClient &client); | ||||||
|  | |||||||
| @ -30,9 +30,10 @@ struct VoidNetClientAPI | |||||||
| 	static void Receive(); | 	static void Receive(); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|  | 	static void receive_data(); | ||||||
|  |  | ||||||
| 	static TcpClient client; | 	static TcpClient client; | ||||||
| 	static uint16 id; | 	static uint16 id; | ||||||
| 	static bool receive; |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -55,8 +55,8 @@ void TcpClient::Shutdown() | |||||||
| { | { | ||||||
| 	NetworkMessage message; | 	NetworkMessage message; | ||||||
| 	message.sender = id; | 	message.sender = id; | ||||||
| 	message.distribution_mode = static_cast<byte>(Server); | 	message.distribution_mode = Server; | ||||||
| 	message.tag = static_cast<byte>(DISCONNECT); | 	message.tag = DISCONNECT; | ||||||
| 	SendMessage(message); | 	SendMessage(message); | ||||||
| 	uint16 code = closesocket(tcp_socket); | 	uint16 code = closesocket(tcp_socket); | ||||||
| 	if (code == SOCKET_ERROR) | 	if (code == SOCKET_ERROR) | ||||||
|  | |||||||
| @ -60,7 +60,8 @@ void TcpServer::SendMessage(const NetworkMessage & message) | |||||||
| 			if (message.sender != client.GetID()) | 			if (message.sender != client.GetID()) | ||||||
| 				client.SendMessage(message); | 				client.SendMessage(message); | ||||||
| 		} | 		} | ||||||
| 		OnMessage(message); | 		for (uint16 i = 0; i < OnMessageFunctions.size(); i++) | ||||||
|  | 			OnMessageFunctions[i](message); | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
| 	case AllAndMe: // this will send the message to EVERYONE including the user that sent it | 	case AllAndMe: // this will send the message to EVERYONE including the user that sent it | ||||||
| @ -70,14 +71,16 @@ void TcpServer::SendMessage(const NetworkMessage & message) | |||||||
| 			TcpClient client = *it; | 			TcpClient client = *it; | ||||||
| 			client.SendMessage(message); | 			client.SendMessage(message); | ||||||
| 		} | 		} | ||||||
| 		OnMessage(message); | 		for (uint16 i = 0; i < OnMessageFunctions.size(); i++) | ||||||
|  | 			OnMessageFunctions[i](message); | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
| 	case Server: // this will only send the message to the server | 	case Server: // this will only send the message to the server | ||||||
| 	{ | 	{ | ||||||
| 		if (message.tag == DISCONNECT) | 		if (message.tag == DISCONNECT) | ||||||
| 			CloseSocket(message.sender); | 			CloseSocket(message.sender); | ||||||
| 		OnMessage(message); | 		for (uint16 i = 0; i < OnMessageFunctions.size(); i++) | ||||||
|  | 			OnMessageFunctions[i](message); | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
| 	case Others: // this will send the message to others, excluding server and the user that sent it | 	case Others: // this will send the message to others, excluding server and the user that sent it | ||||||
|  | |||||||
| @ -52,11 +52,15 @@ void VoidNetClientAPI::SendMessage(byte distribution_mode, uint16 destination_id | |||||||
|  |  | ||||||
| void VoidNetClientAPI::Receive() | void VoidNetClientAPI::Receive() | ||||||
| { | { | ||||||
| 	std::async(std::launch::async, &client.ReceiveMessages); | 	std::async(std::launch::async, &receive_data); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void VoidNetClientAPI::receive_data() | ||||||
|  | { | ||||||
|  | 	client.ReceiveMessages(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void VoidNetClientAPI::Disconnect() | void VoidNetClientAPI::Disconnect() | ||||||
| { | { | ||||||
| 	receive = false; | 	client.Shutdown(); | ||||||
| 	SendMessageToServer |  | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 xX-TheDoctor-Xx
					xX-TheDoctor-Xx