mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r8525) -Codechange: make NetworkSend_Packet(s) and NetworkRecv_Packet functions of NetworkTCPSocketHandler.
This commit is contained in:
parent
4ebb009ab4
commit
59f4f056df
|
@ -38,6 +38,28 @@ void NetworkTCPSocketHandler::Initialize()
|
|||
this->command_queue = NULL;
|
||||
}
|
||||
|
||||
void NetworkTCPSocketHandler::Destroy()
|
||||
{
|
||||
closesocket(this->sock);
|
||||
this->writable = false;
|
||||
this->has_quit = true;
|
||||
|
||||
/* Free all pending and partially received packets */
|
||||
while (this->packet_queue != NULL) {
|
||||
Packet *p = this->packet_queue->next;
|
||||
delete this->packet_queue;
|
||||
this->packet_queue = p;
|
||||
}
|
||||
delete this->packet_recv;
|
||||
this->packet_recv = NULL;
|
||||
|
||||
while (this->command_queue != NULL) {
|
||||
CommandPacket *p = this->command_queue->next;
|
||||
free(this->command_queue);
|
||||
this->command_queue = p;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Functions to help NetworkRecv_Packet/NetworkSend_Packet a bit
|
||||
* A socket can make errors. When that happens this handles what to do.
|
||||
|
@ -67,9 +89,8 @@ NetworkRecvStatus NetworkTCPSocketHandler::CloseConnection()
|
|||
* soon as possible. This is the next tick, or maybe one tick later
|
||||
* if the OS-network-buffer is full)
|
||||
* @param packet the packet to send
|
||||
* @param cs the client to send to
|
||||
*/
|
||||
void NetworkSend_Packet(Packet *packet, NetworkTCPSocketHandler *cs)
|
||||
void NetworkTCPSocketHandler::Send_Packet(Packet *packet)
|
||||
{
|
||||
Packet *p;
|
||||
assert(packet != NULL);
|
||||
|
@ -77,10 +98,10 @@ void NetworkSend_Packet(Packet *packet, NetworkTCPSocketHandler *cs)
|
|||
packet->PrepareToSend();
|
||||
|
||||
/* Locate last packet buffered for the client */
|
||||
p = cs->packet_queue;
|
||||
p = this->packet_queue;
|
||||
if (p == NULL) {
|
||||
/* No packets yet */
|
||||
cs->packet_queue = packet;
|
||||
this->packet_queue = packet;
|
||||
} else {
|
||||
/* Skip to the last packet */
|
||||
while (p->next != NULL) p = p->next;
|
||||
|
@ -94,33 +115,32 @@ void NetworkSend_Packet(Packet *packet, NetworkTCPSocketHandler *cs)
|
|||
* 2) the OS reports back that it can not send any more
|
||||
* data right now (full network-buffer, it happens ;))
|
||||
* 3) sending took too long
|
||||
* @param cs the client to send the packets for
|
||||
*/
|
||||
bool NetworkSend_Packets(NetworkTCPSocketHandler *cs)
|
||||
bool NetworkTCPSocketHandler::Send_Packets()
|
||||
{
|
||||
ssize_t res;
|
||||
Packet *p;
|
||||
|
||||
/* We can not write to this socket!! */
|
||||
if (!cs->writable) return false;
|
||||
if (!cs->IsConnected()) return false;
|
||||
if (!this->writable) return false;
|
||||
if (!this->IsConnected()) return false;
|
||||
|
||||
p = cs->packet_queue;
|
||||
p = this->packet_queue;
|
||||
while (p != NULL) {
|
||||
res = send(cs->sock, (const char*)p->buffer + p->pos, p->size - p->pos, 0);
|
||||
res = send(this->sock, (const char*)p->buffer + p->pos, p->size - p->pos, 0);
|
||||
if (res == -1) {
|
||||
int err = GET_LAST_ERROR();
|
||||
if (err != EWOULDBLOCK) {
|
||||
/* Something went wrong.. close client! */
|
||||
DEBUG(net, 0, "send failed with error %d", err);
|
||||
cs->CloseConnection();
|
||||
this->CloseConnection();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (res == 0) {
|
||||
/* Client/server has left us :( */
|
||||
cs->CloseConnection();
|
||||
this->CloseConnection();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -129,9 +149,9 @@ bool NetworkSend_Packets(NetworkTCPSocketHandler *cs)
|
|||
/* Is this packet sent? */
|
||||
if (p->pos == p->size) {
|
||||
/* Go to the next packet */
|
||||
cs->packet_queue = p->next;
|
||||
this->packet_queue = p->next;
|
||||
delete p;
|
||||
p = cs->packet_queue;
|
||||
p = this->packet_queue;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
@ -142,37 +162,36 @@ bool NetworkSend_Packets(NetworkTCPSocketHandler *cs)
|
|||
|
||||
/**
|
||||
* Receives a packet for the given client
|
||||
* @param cs the client to (try to) receive a packet for
|
||||
* @param status the variable to store the status into
|
||||
* @return the received packet (or NULL when it didn't receive one)
|
||||
*/
|
||||
Packet *NetworkRecv_Packet(NetworkTCPSocketHandler *cs, NetworkRecvStatus *status)
|
||||
Packet *NetworkTCPSocketHandler::Recv_Packet(NetworkRecvStatus *status)
|
||||
{
|
||||
ssize_t res;
|
||||
Packet *p;
|
||||
|
||||
*status = NETWORK_RECV_STATUS_OKAY;
|
||||
|
||||
if (!cs->IsConnected()) return NULL;
|
||||
if (!this->IsConnected()) return NULL;
|
||||
|
||||
if (cs->packet_recv == NULL) {
|
||||
cs->packet_recv = new Packet(cs);
|
||||
if (cs->packet_recv == NULL) error("Failed to allocate packet");
|
||||
if (this->packet_recv == NULL) {
|
||||
this->packet_recv = new Packet(this);
|
||||
if (this->packet_recv == NULL) error("Failed to allocate packet");
|
||||
}
|
||||
|
||||
p = cs->packet_recv;
|
||||
p = this->packet_recv;
|
||||
|
||||
/* Read packet size */
|
||||
if (p->pos < sizeof(PacketSize)) {
|
||||
while (p->pos < sizeof(PacketSize)) {
|
||||
/* Read the size of the packet */
|
||||
res = recv(cs->sock, (char*)p->buffer + p->pos, sizeof(PacketSize) - p->pos, 0);
|
||||
res = recv(this->sock, (char*)p->buffer + p->pos, sizeof(PacketSize) - p->pos, 0);
|
||||
if (res == -1) {
|
||||
int err = GET_LAST_ERROR();
|
||||
if (err != EWOULDBLOCK) {
|
||||
/* Something went wrong... (104 is connection reset by peer) */
|
||||
if (err != 104) DEBUG(net, 0, "recv failed with error %d", err);
|
||||
*status = cs->CloseConnection();
|
||||
*status = this->CloseConnection();
|
||||
return NULL;
|
||||
}
|
||||
/* Connection would block, so stop for now */
|
||||
|
@ -180,7 +199,7 @@ Packet *NetworkRecv_Packet(NetworkTCPSocketHandler *cs, NetworkRecvStatus *statu
|
|||
}
|
||||
if (res == 0) {
|
||||
/* Client/server has left */
|
||||
*status = cs->CloseConnection();
|
||||
*status = this->CloseConnection();
|
||||
return NULL;
|
||||
}
|
||||
p->pos += res;
|
||||
|
@ -190,20 +209,20 @@ Packet *NetworkRecv_Packet(NetworkTCPSocketHandler *cs, NetworkRecvStatus *statu
|
|||
p->ReadRawPacketSize();
|
||||
|
||||
if (p->size > SEND_MTU) {
|
||||
*status = cs->CloseConnection();
|
||||
*status = this->CloseConnection();
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Read rest of packet */
|
||||
while (p->pos < p->size) {
|
||||
res = recv(cs->sock, (char*)p->buffer + p->pos, p->size - p->pos, 0);
|
||||
res = recv(this->sock, (char*)p->buffer + p->pos, p->size - p->pos, 0);
|
||||
if (res == -1) {
|
||||
int err = GET_LAST_ERROR();
|
||||
if (err != EWOULDBLOCK) {
|
||||
/* Something went wrong... (104 is connection reset by peer) */
|
||||
if (err != 104) DEBUG(net, 0, "recv failed with error %d", err);
|
||||
*status = cs->CloseConnection();
|
||||
*status = this->CloseConnection();
|
||||
return NULL;
|
||||
}
|
||||
/* Connection would block */
|
||||
|
@ -211,7 +230,7 @@ Packet *NetworkRecv_Packet(NetworkTCPSocketHandler *cs, NetworkRecvStatus *statu
|
|||
}
|
||||
if (res == 0) {
|
||||
/* Client/server has left */
|
||||
*status = cs->CloseConnection();
|
||||
*status = this->CloseConnection();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -219,10 +238,16 @@ Packet *NetworkRecv_Packet(NetworkTCPSocketHandler *cs, NetworkRecvStatus *statu
|
|||
}
|
||||
|
||||
/* Prepare for receiving a new packet */
|
||||
cs->packet_recv = NULL;
|
||||
this->packet_recv = NULL;
|
||||
|
||||
p->PrepareToRead();
|
||||
return p;
|
||||
}
|
||||
|
||||
bool NetworkTCPSocketHandler::IsPacketQueueEmpty()
|
||||
{
|
||||
return this->packet_queue == NULL;
|
||||
}
|
||||
|
||||
|
||||
#endif /* ENABLE_NETWORK */
|
||||
|
|
|
@ -84,6 +84,9 @@ typedef enum {
|
|||
/** Base socket handler for all TCP sockets */
|
||||
class NetworkTCPSocketHandler : public NetworkSocketHandler {
|
||||
/* TODO: rewrite into a proper class */
|
||||
private:
|
||||
Packet *packet_queue; ///< Packets that are awaiting delivery
|
||||
Packet *packet_recv; ///< Partially received packet
|
||||
public:
|
||||
uint16 index; ///< Client index
|
||||
uint32 last_frame; ///< Last frame we have executed
|
||||
|
@ -93,21 +96,19 @@ public:
|
|||
ClientStatus status; ///< Status of this client
|
||||
bool writable; ///< Can we write to this socket?
|
||||
|
||||
Packet *packet_queue; ///< Packets that are awaiting delivery
|
||||
Packet *packet_recv; ///< Partially received packet
|
||||
|
||||
CommandPacket *command_queue; ///< The command-queue awaiting delivery
|
||||
|
||||
NetworkRecvStatus CloseConnection();
|
||||
void Initialize();
|
||||
void Destroy();
|
||||
|
||||
void Send_Packet(Packet *packet);
|
||||
bool Send_Packets();
|
||||
bool IsPacketQueueEmpty();
|
||||
|
||||
Packet *Recv_Packet(NetworkRecvStatus *status);
|
||||
};
|
||||
|
||||
|
||||
|
||||
void NetworkSend_Packet(Packet *packet, NetworkTCPSocketHandler *cs);
|
||||
Packet *NetworkRecv_Packet(NetworkTCPSocketHandler *cs, NetworkRecvStatus *status);
|
||||
bool NetworkSend_Packets(NetworkTCPSocketHandler *cs);
|
||||
|
||||
#endif /* ENABLE_NETWORK */
|
||||
|
||||
#endif /* NETWORK_CORE_TCP_H */
|
||||
|
|
|
@ -261,7 +261,7 @@ static void NetworkClientError(NetworkRecvStatus res, NetworkTCPSocketHandler* c
|
|||
SEND_COMMAND(PACKET_CLIENT_ERROR)(errorno);
|
||||
|
||||
// Dequeue all commands before closing the socket
|
||||
NetworkSend_Packets(DEREF_CLIENT(0));
|
||||
DEREF_CLIENT(0)->Send_Packets();
|
||||
}
|
||||
|
||||
_switch_mode = SM_MENU;
|
||||
|
@ -629,24 +629,7 @@ void NetworkCloseClient(NetworkTCPSocketHandler *cs)
|
|||
NetworkServer_HandleChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_BROADCAST, 0, "Game unpaused", NETWORK_SERVER_INDEX);
|
||||
}
|
||||
|
||||
closesocket(cs->sock);
|
||||
cs->writable = false;
|
||||
cs->has_quit = true;
|
||||
|
||||
// Free all pending and partially received packets
|
||||
while (cs->packet_queue != NULL) {
|
||||
Packet *p = cs->packet_queue->next;
|
||||
free(cs->packet_queue);
|
||||
cs->packet_queue = p;
|
||||
}
|
||||
free(cs->packet_recv);
|
||||
cs->packet_recv = NULL;
|
||||
|
||||
while (cs->command_queue != NULL) {
|
||||
CommandPacket *p = cs->command_queue->next;
|
||||
free(cs->command_queue);
|
||||
cs->command_queue = p;
|
||||
}
|
||||
cs->Destroy();
|
||||
|
||||
// Close the gap in the client-list
|
||||
ci = DEREF_CLIENT_INFO(cs);
|
||||
|
@ -827,7 +810,7 @@ static void NetworkClose(void)
|
|||
FOR_ALL_CLIENTS(cs) {
|
||||
if (!_network_server) {
|
||||
SEND_COMMAND(PACKET_CLIENT_QUIT)("leaving");
|
||||
NetworkSend_Packets(cs);
|
||||
cs->Send_Packets();
|
||||
}
|
||||
NetworkCloseClient(cs);
|
||||
}
|
||||
|
@ -1066,7 +1049,7 @@ void NetworkReboot(void)
|
|||
NetworkTCPSocketHandler *cs;
|
||||
FOR_ALL_CLIENTS(cs) {
|
||||
SEND_COMMAND(PACKET_SERVER_NEWGAME)(cs);
|
||||
NetworkSend_Packets(cs);
|
||||
cs->Send_Packets();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1090,7 +1073,7 @@ void NetworkDisconnect(void)
|
|||
NetworkTCPSocketHandler *cs;
|
||||
FOR_ALL_CLIENTS(cs) {
|
||||
SEND_COMMAND(PACKET_SERVER_SHUTDOWN)(cs);
|
||||
NetworkSend_Packets(cs);
|
||||
cs->Send_Packets();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1172,7 +1155,7 @@ static void NetworkSend(void)
|
|||
NetworkTCPSocketHandler *cs;
|
||||
FOR_ALL_CLIENTS(cs) {
|
||||
if (cs->writable) {
|
||||
NetworkSend_Packets(cs);
|
||||
cs->Send_Packets();
|
||||
|
||||
if (cs->status == STATUS_MAP) {
|
||||
// This client is in the middle of a map-send, call the function for that
|
||||
|
|
|
@ -48,7 +48,7 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_COMPANY_INFO)
|
|||
InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
|
||||
|
||||
p = NetworkSend_Init(PACKET_CLIENT_COMPANY_INFO);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_JOIN)
|
||||
|
@ -75,7 +75,7 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_JOIN)
|
|||
p->Send_uint8 (_network_playas); // PlayAs
|
||||
p->Send_uint8 (NETLANG_ANY); // Language
|
||||
p->Send_string(_network_unique_id);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)
|
||||
|
@ -87,7 +87,7 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)
|
|||
//
|
||||
|
||||
Packet *p = NetworkSend_Init(PACKET_CLIENT_NEWGRFS_CHECKED);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_PASSWORD)(NetworkPasswordType type, const char *password)
|
||||
|
@ -102,7 +102,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_PASSWORD)(NetworkPasswordType type,
|
|||
Packet *p = NetworkSend_Init(PACKET_CLIENT_PASSWORD);
|
||||
p->Send_uint8 (type);
|
||||
p->Send_string(password);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_GETMAP)
|
||||
|
@ -115,7 +115,7 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_GETMAP)
|
|||
//
|
||||
|
||||
Packet *p = NetworkSend_Init(PACKET_CLIENT_GETMAP);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_MAP_OK)
|
||||
|
@ -128,7 +128,7 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_MAP_OK)
|
|||
//
|
||||
|
||||
Packet *p = NetworkSend_Init(PACKET_CLIENT_MAP_OK);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_ACK)
|
||||
|
@ -143,7 +143,7 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_ACK)
|
|||
Packet *p = NetworkSend_Init(PACKET_CLIENT_ACK);
|
||||
|
||||
p->Send_uint32(_frame_counter);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
// Send a command packet to the server
|
||||
|
@ -172,7 +172,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_COMMAND)(CommandPacket *cp)
|
|||
p->Send_string(cp->text);
|
||||
p->Send_uint8 (cp->callback);
|
||||
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
// Send a chat-packet over the network
|
||||
|
@ -194,7 +194,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_CHAT)(NetworkAction action, DestType
|
|||
p->Send_uint8 (type);
|
||||
p->Send_uint8 (dest);
|
||||
p->Send_string(msg);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
// Send an error-packet over the network
|
||||
|
@ -209,7 +209,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_ERROR)(NetworkErrorCode errorno)
|
|||
Packet *p = NetworkSend_Init(PACKET_CLIENT_ERROR);
|
||||
|
||||
p->Send_uint8(errorno);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_SET_PASSWORD)(const char *password)
|
||||
|
@ -223,7 +223,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_SET_PASSWORD)(const char *password)
|
|||
Packet *p = NetworkSend_Init(PACKET_CLIENT_SET_PASSWORD);
|
||||
|
||||
p->Send_string(password);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_SET_NAME)(const char *name)
|
||||
|
@ -237,7 +237,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_SET_NAME)(const char *name)
|
|||
Packet *p = NetworkSend_Init(PACKET_CLIENT_SET_NAME);
|
||||
|
||||
p->Send_string(name);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
// Send an quit-packet over the network
|
||||
|
@ -252,7 +252,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_QUIT)(const char *leavemsg)
|
|||
Packet *p = NetworkSend_Init(PACKET_CLIENT_QUIT);
|
||||
|
||||
p->Send_string(leavemsg);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_RCON)(const char *pass, const char *command)
|
||||
|
@ -260,7 +260,7 @@ DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_RCON)(const char *pass, const char *
|
|||
Packet *p = NetworkSend_Init(PACKET_CLIENT_RCON);
|
||||
p->Send_string(pass);
|
||||
p->Send_string(command);
|
||||
NetworkSend_Packet(p, MY_CLIENT);
|
||||
MY_CLIENT->Send_Packet(p);
|
||||
}
|
||||
|
||||
|
||||
|
@ -855,7 +855,7 @@ NetworkRecvStatus NetworkClient_ReadPackets(NetworkTCPSocketHandler *cs)
|
|||
Packet *p;
|
||||
NetworkRecvStatus res = NETWORK_RECV_STATUS_OKAY;
|
||||
|
||||
while (res == NETWORK_RECV_STATUS_OKAY && (p = NetworkRecv_Packet(cs, &res)) != NULL) {
|
||||
while (res == NETWORK_RECV_STATUS_OKAY && (p = cs->Recv_Packet(&res)) != NULL) {
|
||||
byte type = p->Recv_uint8();
|
||||
if (type < PACKET_END && _network_client_packet[type] != NULL && !MY_CLIENT->has_quit) {
|
||||
res = _network_client_packet[type](p);
|
||||
|
|
|
@ -53,7 +53,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_CLIENT_INFO)(NetworkTCPSocketHandler
|
|||
p->Send_string(ci->client_name);
|
||||
p->Send_string(ci->unique_id);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_COMPANY_INFO)
|
|||
p->Send_uint8 (NETWORK_COMPANY_INFO_VERSION);
|
||||
p->Send_uint8 (active);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_COMPANY_INFO)
|
|||
p->Send_string(_network_player_info[player->index].players);
|
||||
}
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
p = NetworkSend_Init(PACKET_SERVER_COMPANY_INFO);
|
||||
|
@ -125,7 +125,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_COMPANY_INFO)
|
|||
p->Send_uint8 (NETWORK_COMPANY_INFO_VERSION);
|
||||
p->Send_uint8 (0);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_ERROR)(NetworkTCPSocketHandler *cs, NetworkErrorCode error)
|
||||
|
@ -141,7 +141,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_ERROR)(NetworkTCPSocketHandler *cs,
|
|||
Packet *p = NetworkSend_Init(PACKET_SERVER_ERROR);
|
||||
|
||||
p->Send_uint8(error);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
|
||||
GetNetworkErrorMsg(str, error, lastof(str));
|
||||
|
||||
|
@ -173,7 +173,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_ERROR)(NetworkTCPSocketHandler *cs,
|
|||
cs->has_quit = true;
|
||||
|
||||
// Make sure the data get's there before we close the connection
|
||||
NetworkSend_Packets(cs);
|
||||
cs->Send_Packets();
|
||||
|
||||
// The client made a mistake, so drop his connection now!
|
||||
NetworkCloseClient(cs);
|
||||
|
@ -202,7 +202,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_CHECK_NEWGRFS)(NetworkTCPSocketHandl
|
|||
cs->Send_GRFIdentifier(p, c);
|
||||
}
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_NEED_PASSWORD)(NetworkTCPSocketHandler *cs, NetworkPasswordType type)
|
||||
|
@ -216,7 +216,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_NEED_PASSWORD)(NetworkTCPSocketHandl
|
|||
|
||||
Packet *p = NetworkSend_Init(PACKET_SERVER_NEED_PASSWORD);
|
||||
p->Send_uint8(type);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND(PACKET_SERVER_WELCOME)
|
||||
|
@ -239,7 +239,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_WELCOME)
|
|||
|
||||
p = NetworkSend_Init(PACKET_SERVER_WELCOME);
|
||||
p->Send_uint16(cs->index);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
|
||||
// Transmit info about all the active clients
|
||||
FOR_ALL_CLIENTS(new_cs) {
|
||||
|
@ -270,7 +270,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_WAIT)
|
|||
|
||||
p = NetworkSend_Init(PACKET_SERVER_WAIT);
|
||||
p->Send_uint8(waiting);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
// This sends the map to the client
|
||||
|
@ -319,7 +319,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP)
|
|||
p->Send_uint8 (MAP_PACKET_START);
|
||||
p->Send_uint32(_frame_counter);
|
||||
p->Send_uint32(ftell(file_pointer));
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
|
||||
fseek(file_pointer, 0, SEEK_SET);
|
||||
|
||||
|
@ -342,12 +342,12 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP)
|
|||
if (ferror(file_pointer)) error("Error reading temporary network savegame!");
|
||||
|
||||
p->size += res;
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
if (feof(file_pointer)) {
|
||||
// Done reading!
|
||||
Packet *p = NetworkSend_Init(PACKET_SERVER_MAP);
|
||||
p->Send_uint8(MAP_PACKET_END);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
|
||||
// Set the status to DONE_MAP, no we will wait for the client
|
||||
// to send it is ready (maybe that happens like never ;))
|
||||
|
@ -381,8 +381,8 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP)
|
|||
}
|
||||
|
||||
// Send all packets (forced) and check if we have send it all
|
||||
NetworkSend_Packets(cs);
|
||||
if (cs->packet_queue == NULL) {
|
||||
cs->Send_Packets();
|
||||
if (cs->IsPacketQueueEmpty()) {
|
||||
// All are sent, increase the sent_packets
|
||||
sent_packets *= 2;
|
||||
} else {
|
||||
|
@ -407,7 +407,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_JOIN)(NetworkTCPSocketHandler *cs, u
|
|||
|
||||
p->Send_uint16(client_index);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
|
||||
|
@ -433,7 +433,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_FRAME)
|
|||
p->Send_uint32(_sync_seed_2);
|
||||
#endif
|
||||
#endif
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND(PACKET_SERVER_SYNC)
|
||||
|
@ -455,7 +455,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_SYNC)
|
|||
#ifdef NETWORK_SEND_DOUBLE_SEED
|
||||
p->Send_uint32(_sync_seed_2);
|
||||
#endif
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_COMMAND)(NetworkTCPSocketHandler *cs, CommandPacket *cp)
|
||||
|
@ -485,7 +485,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_COMMAND)(NetworkTCPSocketHandler *cs
|
|||
p->Send_uint8 (cp->callback);
|
||||
p->Send_uint32(cp->frame);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_CHAT)(NetworkTCPSocketHandler *cs, NetworkAction action, uint16 client_index, bool self_send, const char *msg)
|
||||
|
@ -506,7 +506,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_CHAT)(NetworkTCPSocketHandler *cs, N
|
|||
p->Send_uint8 (self_send);
|
||||
p->Send_string(msg);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_ERROR_QUIT)(NetworkTCPSocketHandler *cs, uint16 client_index, NetworkErrorCode errorno)
|
||||
|
@ -525,7 +525,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_ERROR_QUIT)(NetworkTCPSocketHandler
|
|||
p->Send_uint16(client_index);
|
||||
p->Send_uint8 (errorno);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_QUIT)(NetworkTCPSocketHandler *cs, uint16 client_index, const char *leavemsg)
|
||||
|
@ -544,7 +544,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_QUIT)(NetworkTCPSocketHandler *cs, u
|
|||
p->Send_uint16(client_index);
|
||||
p->Send_string(leavemsg);
|
||||
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND(PACKET_SERVER_SHUTDOWN)
|
||||
|
@ -557,7 +557,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_SHUTDOWN)
|
|||
//
|
||||
|
||||
Packet *p = NetworkSend_Init(PACKET_SERVER_SHUTDOWN);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND(PACKET_SERVER_NEWGAME)
|
||||
|
@ -570,7 +570,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_NEWGAME)
|
|||
//
|
||||
|
||||
Packet *p = NetworkSend_Init(PACKET_SERVER_NEWGAME);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_RCON)(NetworkTCPSocketHandler *cs, uint16 color, const char *command)
|
||||
|
@ -579,7 +579,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_RCON)(NetworkTCPSocketHandler *cs, u
|
|||
|
||||
p->Send_uint16(color);
|
||||
p->Send_string(command);
|
||||
NetworkSend_Packet(p, cs);
|
||||
cs->Send_Packet(p);
|
||||
}
|
||||
|
||||
// **********
|
||||
|
@ -1463,7 +1463,7 @@ bool NetworkServer_ReadPackets(NetworkTCPSocketHandler *cs)
|
|||
{
|
||||
Packet *p;
|
||||
NetworkRecvStatus res;
|
||||
while ((p = NetworkRecv_Packet(cs, &res)) != NULL) {
|
||||
while ((p = cs->Recv_Packet(&res)) != NULL) {
|
||||
byte type = p->Recv_uint8();
|
||||
if (type < PACKET_END && _network_server_packet[type] != NULL && !cs->has_quit) {
|
||||
_network_server_packet[type](cs, p);
|
||||
|
|
Loading…
Reference in New Issue