#include <ArServerClient.h>
Public Types | |
| enum | ServerState { STATE_SENT_INTRO, STATE_REJECTED, STATE_CONNECTED, STATE_DISCONNECTED } |
| The state of the connection. More... | |
Public Member Functions | |
| ArServerClient (ArSocket *tcpSocket, unsigned int udpPort, long authKey, long introKey, ArRetFunctor2< bool, ArNetPacket *, struct sockaddr_in * > *sendUdpCallback, std::map< unsigned int, ArServerData * > *dataMap, const char *passwordKey, const char *serverKey, const ArServerUserInfo *userInfo=NULL, int rejecting=0, const char *rejectingString="", bool debugLogging=false, const char *serverClientName="ArServerBase_unknown", bool logPasswordFailureVerbosely=false, bool allowSlowPackets=true, bool allowIdlePackets=true) | |
| Constructor. | |
| void | broadcastPacketTcp (ArNetPacket *packet) |
| void | broadcastPacketUdp (ArNetPacket *packet) |
| unsigned int | findCommandFromName (const char *commandName) const |
| Returns the command ID for the specified name, or 0 if it is not found. | |
| void | forceDisconnect (bool quiet) |
| Forcibly disconnect a client (for client/server switching). | |
| long | getAuthKey (void) |
| Gets the authKey used for setting up UDP from this client to the server. | |
| ArTime | getCreationTime (void) |
| Get creation time. | |
| long | getFrequency (ArTypes::UByte2 command) |
| Gets how often a command is asked for. | |
| ArServerClientIdentifier | getIdentifier (void) const |
| Gets the identifier of this server client. | |
| const char * | getIPString (void) const |
| Gets the IP string of the client. | |
| ServerState | getState (void) |
| Gets the state. | |
| ArSocket * | getTcpSocket (void) |
| Internal function to get the tcp socket. | |
| sockaddr_in * | getUdpAddress (void) |
| Gets the sin (network address) for the UDP socket. | |
| void | handleRequests (void) |
| Handles the requests for packets. | |
| bool | hasGroupAccess (const char *group) |
| Sees if this client has access to a given group. | |
| bool | hasIdlePackets (void) |
| Gets if we have any idle packets to process. | |
| bool | hasSlowPackets (void) |
| Gets if we have any slow packets to process. | |
| bool | idlePacketCallback (void) |
| The callback for taking care of idle packets (logic on idle elsewhere). | |
| bool | isTcpOnly (void) |
| Gets the tcp only flag. | |
| void | logTracking (bool terse) |
| Logs the tracking information (packet and byte counts). | |
| void | processAuthPacket (ArNetPacket *packet, struct sockaddr_in *sin) |
| Processes the auth packets that came from udp. | |
| void | processPacket (ArNetPacket *packet, bool tcp=true) |
| Process the packet whever it came from. | |
| void | resetTracking (void) |
| Clears the tracking information (resets counters). | |
| bool | sendPacketTcp (ArNetPacket *packet) |
| bool | sendPacketUdp (ArNetPacket *packet) |
| void | setBackupTimeout (double timeoutInMins) |
| Sets the backup timeout. | |
| void | setIdentifier (ArServerClientIdentifier identifier) |
| Sets the identifier of this server client. | |
| void | setUdpAddress (struct sockaddr_in *sin) |
| Sets the sin (network address) for the UDP socket. | |
| void | shutdown (void) |
| Sends a shutdown command to the socket. | |
| bool | slowPacketCallback (void) |
| The callback for taking care of slow packets. | |
| bool | tcpCallback (void) |
| The callback for taking care of the TCP connection. | |
| void | useTcpOnly (void) |
| Sets the TCP only flag. | |
| virtual | ~ArServerClient () |
| Destructor. | |
Protected Member Functions | |
| const char * | findCommandName (unsigned int command) const |
| unsigned int | getCommand () |
| bool | getForceTcpFlag () |
| void | internalSwitchState (ServerState state) |
| void | popCommand (void) |
| void | popForceTcpFlag (void) |
| void | popSlowIdleCommand (void) |
| void | popSlowIdleForceTcpFlag (void) |
| void | pushCommand (unsigned int num) |
| void | pushForceTcpFlag (bool forceTcp) |
| void | pushSlowIdleCommand (unsigned int num) |
| void | pushSlowIdleForceTcpFlag (bool forceTcp) |
| void | sendListPacket (void) |
| bool | setupPacket (ArNetPacket *packet) |
| void | trackPacketReceived (ArNetPacket *packet, ArTypes::UByte2) |
| void | trackPacketSent (ArNetPacket *packet, bool tcp) |
Protected Attributes | |
| bool | myAllowIdlePackets |
| bool | myAllowSlowPackets |
| long | myAuthKey |
| double | myBackupTimeout |
| std::list< unsigned int > | myCommandStack |
| ArTime | myCreationTime |
| std::map< unsigned int, ArServerData * > * | myDataMap |
| bool | myDebugLogging |
| std::list< bool > | myForceTcpStack |
| std::set< std::string, ArStrCaseCmpOp > | myGroups |
| bool | myHaveIdlePackets |
| bool | myHaveSlowPackets |
| ArServerClientIdentifier | myIdentifier |
| std::list< ArNetPacket * > | myIdlePackets |
| ArMutex | myIdlePacketsMutex |
| long | myIntroKey |
| std::string | myIPString |
| bool | myLogPasswordFailureVerbosely |
| std::string | myLogPrefix |
| std::string | myPasswordKey |
|
ArFunctor2C< ArServerClient, ArNetPacket *, bool > | myProcessPacketCB |
| int | myRejecting |
| std::string | myRejectingString |
| std::list< ArServerClientData * > | myRequested |
|
ArRetFunctor2< bool, ArNetPacket *, struct sockaddr_in * > * | mySendUdpCB |
| bool | mySentTcpOnly |
| std::string | myServerKey |
| sockaddr_in | mySin |
| std::list< unsigned int > | mySlowIdleCommandStack |
| std::list< bool > | mySlowIdleForceTcpStack |
| ArThread * | mySlowIdleThread |
| std::list< ArNetPacket * > | mySlowPackets |
| ArMutex | mySlowPacketsMutex |
| ServerState | myState |
| ArTime | myStateStart |
| bool | myTcpOnly |
| ArNetPacketReceiverTcp | myTcpReceiver |
| ArNetPacketSenderTcp | myTcpSender |
| ArSocket | myTcpSocket |
|
std::map< ArTypes::UByte2, Tracker * > | myTrackingReceivedMap |
|
std::map< ArTypes::UByte2, Tracker * > | myTrackingSentMap |
| ArTime | myTrackingStarted |
| bool | myUdpConfirmedFrom |
| bool | myUdpConfirmedTo |
| const ArServerUserInfo * | myUserInfo |
| ArLog::LogLevel | myVerboseLogLevel |
| void ArServerClient::broadcastPacketTcp | ( | ArNetPacket * | packet | ) |
Broadcasts a packet over TCP if this client wants this data -- For internal use only!
| void ArServerClient::broadcastPacketUdp | ( | ArNetPacket * | packet | ) |
Broadcasts a packet over UDP if this client wants this data (unless client only wants tcp then sends over tcp) -- For internal ArNetworking use only!
| bool ArServerClient::sendPacketTcp | ( | ArNetPacket * | packet | ) |
Send a packet over TCP. The command ID of the outgoing packet will be set to the current command ID (from the incoming packet).
| bool ArServerClient::sendPacketUdp | ( | ArNetPacket * | packet | ) |
Send a packet over UDP (unless client only wants TCP; then sends over TCP). The command ID of the outgoing packet will be set to the current command ID (from the incoming packet).
1.5.1