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:

## 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.
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
Packet * | packet_queue
| Packets that are awaiting delivery.
Packet * | packet_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::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

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:

- src/network/core/tcp.h
- src/network/core/tcp.cpp