Public Member Functions | Data Fields | Private Attributes

NetworkTCPSocketHandler Class Reference

Base socket handler for all TCP sockets. More...

#include <tcp.h>

Inheritance diagram for NetworkTCPSocketHandler:
NetworkSocketHandler NetworkAdminSocketHandler NetworkContentSocketHandler NetworkGameSocketHandler ServerNetworkAdminSocketHandler ClientNetworkContentSocketHandler ClientNetworkGameSocketHandler ServerNetworkGameSocketHandler

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 PacketReceivePacket ()
 Receives a packet for the given client.
bool CanSendReceive ()
 Check whether this socket can send or receive something.
bool HasSendQueue ()
 Whether there is something pending in the send queue.
 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

Packetpacket_queue
 Packets that are awaiting delivery.
Packetpacket_recv
 Partially received packet.

Detailed Description

Base socket handler for all TCP sockets.

Definition at line 31 of file tcp.h.


Constructor & Destructor Documentation

NetworkTCPSocketHandler::NetworkTCPSocketHandler ( SOCKET  s = INVALID_SOCKET  ) 

Construct a socket handler for a TCP connection.

Parameters:
s The just opened TCP connection.

Definition at line 25 of file tcp.cpp.


Member Function Documentation

bool NetworkTCPSocketHandler::CanSendReceive (  ) 

Check whether this socket can send or receive something.

Returns:
true when there is something to receive.
Note:
Sets writable if more data can be sent.

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.

Parameters:
error Whether we quit under an error condition or not.
Returns:
new status of the connection.

Reimplemented from NetworkSocketHandler.

Reimplemented in NetworkAdminSocketHandler, and NetworkGameSocketHandler.

Definition at line 40 of file tcp.cpp.

References Packet::next, packet_queue, packet_recv, and writable.

Referenced by NetworkContentSocketHandler::Close(), ReceivePacket(), and SendPackets().

bool NetworkTCPSocketHandler::HasSendQueue (  )  [inline]

Whether there is something pending in the send queue.

Returns:
true when something is pending in the send queue.

Definition at line 57 of file tcp.h.

References packet_queue.

bool NetworkTCPSocketHandler::IsConnected (  )  const [inline]

Whether this socket is currently bound to a socket.

Returns:
true when the socket is bound, false otherwise

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.

Returns:
The received packet (or NULL when it didn't receive one)

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)

Parameters:
packet the packet to send

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(), ServerNetworkAdminSocketHandler::SendGameScript(), ClientNetworkGameSocketHandler::SendGetMap(), ClientNetworkGameSocketHandler::SendJoin(), ServerNetworkGameSocketHandler::SendMap(), ClientNetworkGameSocketHandler::SendMapOk(), ClientNetworkGameSocketHandler::SendMove(), ServerNetworkAdminSocketHandler::SendNewGame(), ClientNetworkGameSocketHandler::SendNewGRFsOk(), ServerNetworkAdminSocketHandler::SendPong(), ServerNetworkAdminSocketHandler::SendProtocol(), ClientNetworkGameSocketHandler::SendQuit(), ClientNetworkGameSocketHandler::SendRCon(), ServerNetworkAdminSocketHandler::SendRcon(), ServerNetworkAdminSocketHandler::SendRconEnd(), 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

Parameters:
closing_down Whether we are closing down the connection.
Returns:
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, and writable.

Referenced by ClientNetworkGameSocketHandler::CloseConnection(), NetworkDisconnect(), ClientNetworkGameSocketHandler::Send(), ServerNetworkAdminSocketHandler::Send(), ServerNetworkGameSocketHandler::SendMap(), and ClientNetworkContentSocketHandler::SendReceive().


The documentation for this class was generated from the following files: