Base socket handler for all TCP sockets. More...
#include <tcp.h>
Public Member Functions | |
bool | IsConnected () const |
Whether this socket is currently bound to a socket. | |
virtual NetworkRecvStatus | CloseConnection (bool error=true) |
Close the current connection; for TCP this will be mostly equivalent to Close(), but for UDP it just means the packet has to be dropped. | |
virtual void | SendPacket (Packet *packet) |
This function puts the packet in the send-queue and it is send as soon as possible. | |
SendPacketsState | SendPackets (bool closing_down=false) |
Sends all the buffered packets out for this client. | |
virtual Packet * | ReceivePacket () |
Receives a packet for the given client. | |
bool | CanSendReceive () |
Check whether this socket can send or receive something. | |
NetworkTCPSocketHandler (SOCKET s=INVALID_SOCKET) | |
Construct a socket handler for a TCP connection. | |
Data Fields | |
SOCKET | sock |
The socket currently connected to. | |
bool | writable |
Can we write to this socket? | |
Private Attributes | |
Packet * | packet_queue |
Packets that are awaiting delivery. | |
Packet * | packet_recv |
Partially received packet. |
Base socket handler for all TCP sockets.
Definition at line 31 of file tcp.h.
NetworkTCPSocketHandler::NetworkTCPSocketHandler | ( | SOCKET | s = INVALID_SOCKET |
) |
bool NetworkTCPSocketHandler::CanSendReceive | ( | ) |
Check whether this socket can send or receive something.
true
when there is something to receive. Definition at line 227 of file tcp.cpp.
References sock, and writable.
Referenced by ClientNetworkGameSocketHandler::Receive(), and ClientNetworkContentSocketHandler::SendReceive().
NetworkRecvStatus NetworkTCPSocketHandler::CloseConnection | ( | bool | error = true |
) | [virtual] |
Close the current connection; for TCP this will be mostly equivalent to Close(), but for UDP it just means the packet has to be dropped.
error | Whether we quit under an error condition or not. |
Reimplemented from NetworkSocketHandler.
Reimplemented in NetworkAdminSocketHandler, and NetworkGameSocketHandler.
Definition at line 40 of file tcp.cpp.
References NETWORK_RECV_STATUS_OKAY, Packet::next, packet_queue, packet_recv, and writable.
Referenced by NetworkContentSocketHandler::Close(), ReceivePacket(), and SendPackets().
bool NetworkTCPSocketHandler::IsConnected | ( | ) | const [inline] |
Whether this socket is currently bound to a socket.
Definition at line 43 of file tcp.h.
References sock.
Referenced by ReceivePacket(), and SendPackets().
Packet * NetworkTCPSocketHandler::ReceivePacket | ( | ) | [virtual] |
Receives a packet for the given client.
Reimplemented in ServerNetworkGameSocketHandler.
Definition at line 147 of file tcp.cpp.
References Packet::buffer, CloseConnection(), DEBUG, IsConnected(), packet_recv, Packet::pos, Packet::PrepareToRead(), Packet::ReadRawPacketSize(), SEND_MTU, Packet::size, and sock.
Referenced by NetworkGameSocketHandler::ReceivePackets(), NetworkContentSocketHandler::ReceivePackets(), and NetworkAdminSocketHandler::ReceivePackets().
void NetworkTCPSocketHandler::SendPacket | ( | Packet * | packet | ) | [virtual] |
This function puts the packet in the send-queue and it is send as soon as possible.
This is the next tick, or maybe one tick later if the OS-network-buffer is full)
packet | the packet to send |
Reimplemented in ServerNetworkGameSocketHandler.
Definition at line 63 of file tcp.cpp.
References Packet::buffer, Packet::next, packet_queue, Packet::PrepareToSend(), ReallocT(), and Packet::size.
Referenced by ClientNetworkContentSocketHandler::DownloadSelectedContentFallback(), ClientNetworkContentSocketHandler::RequestContentList(), ClientNetworkGameSocketHandler::SendAck(), ClientNetworkGameSocketHandler::SendChat(), ServerNetworkAdminSocketHandler::SendChat(), ServerNetworkAdminSocketHandler::SendClientError(), ServerNetworkAdminSocketHandler::SendClientInfo(), ServerNetworkAdminSocketHandler::SendClientJoin(), ServerNetworkAdminSocketHandler::SendClientQuit(), ServerNetworkAdminSocketHandler::SendClientUpdate(), ServerNetworkAdminSocketHandler::SendCmdLogging(), ServerNetworkAdminSocketHandler::SendCmdNames(), ClientNetworkGameSocketHandler::SendCommand(), ServerNetworkAdminSocketHandler::SendCompanyEconomy(), ServerNetworkAdminSocketHandler::SendCompanyInfo(), ClientNetworkGameSocketHandler::SendCompanyInformationQuery(), ServerNetworkAdminSocketHandler::SendCompanyNew(), ClientNetworkGameSocketHandler::SendCompanyPassword(), ServerNetworkAdminSocketHandler::SendCompanyRemove(), ServerNetworkAdminSocketHandler::SendCompanyStats(), ServerNetworkAdminSocketHandler::SendCompanyUpdate(), ServerNetworkAdminSocketHandler::SendConsole(), ServerNetworkAdminSocketHandler::SendDate(), ClientNetworkGameSocketHandler::SendError(), ServerNetworkAdminSocketHandler::SendError(), ClientNetworkGameSocketHandler::SendGamePassword(), ClientNetworkGameSocketHandler::SendGetMap(), ClientNetworkGameSocketHandler::SendJoin(), ClientNetworkGameSocketHandler::SendMapOk(), ClientNetworkGameSocketHandler::SendMove(), ServerNetworkAdminSocketHandler::SendNewGame(), ClientNetworkGameSocketHandler::SendNewGRFsOk(), ServerNetworkAdminSocketHandler::SendProtocol(), ClientNetworkGameSocketHandler::SendQuit(), ClientNetworkGameSocketHandler::SendRCon(), ServerNetworkAdminSocketHandler::SendRcon(), ClientNetworkGameSocketHandler::SendSetName(), ClientNetworkGameSocketHandler::SendSetPassword(), ServerNetworkAdminSocketHandler::SendShutdown(), and ServerNetworkAdminSocketHandler::SendWelcome().
SendPacketsState NetworkTCPSocketHandler::SendPackets | ( | bool | closing_down = false |
) |
Sends all the buffered packets out for this client.
It stops when: 1) all packets are send (queue is empty) 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
closing_down | Whether we are closing down the connection. |
true
if a (part of a) packet could be sent and the connection is not closed yet. Definition at line 97 of file tcp.cpp.
References Packet::buffer, CloseConnection(), DEBUG, IsConnected(), Packet::next, packet_queue, Packet::pos, Packet::size, sock, SPS_ALL_SENT, SPS_CLOSED, SPS_NONE_SENT, SPS_PARTLY_SENT, and writable.
Referenced by ServerNetworkGameSocketHandler::CloseConnection(), ClientNetworkGameSocketHandler::CloseConnection(), NetworkDisconnect(), ClientNetworkGameSocketHandler::Send(), ServerNetworkAdminSocketHandler::Send(), ServerNetworkGameSocketHandler::SendMap(), and ClientNetworkContentSocketHandler::SendReceive().