#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="") | |
Constructor. | |
void | broadcastPacketTcp (ArNetPacket *packet) |
Broadcasts a packet over TCP if this client wants this data -- For internal use only! | |
void | 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! | |
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. | |
long | getFrequency (ArTypes::UByte2 command) |
Gets how often a command is asked for. | |
const char * | getIPString (void) const |
Gets the IP string of the client. | |
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. | |
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) |
Send a packet over TCP. | |
bool | sendPacketUdp (ArNetPacket *packet) |
Send a packet over UDP (unless client only wants TCP; then sends over TCP). | |
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 | tcpCallback (void) |
The callback for taking care of the TCP connection. | |
virtual | ~ArServerClient () |
Destructor. | |
Protected Member Functions | |
unsigned int | getCommand () |
void | internalSwitchState (ServerState state) |
void | popCommand (void) |
void | pushCommand (unsigned int num) |
void | sendListPacket (void) |
bool | setupPacket (ArNetPacket *packet) |
void | trackPacketReceived (ArNetPacket *packet, ArTypes::UByte2, bool tcp) |
void | trackPacketSent (ArNetPacket *packet, bool tcp) |
Protected Attributes | |
long | myAuthKey |
std::list< unsigned int > | myCommandStack |
std::map< unsigned int, ArServerData * > * | myDataMap |
std::set< std::string, ArStrCaseCmpOp > | myGroups |
long | myIntroKey |
std::string | myPasswordKey |
ArFunctor2C< ArServerClient, ArNetPacket *, bool > | myProcessPacketCB |
int | myRejecting |
std::string | myRejectingString |
std::list< ArServerClientData * > | myRequested |
ArRetFunctor2< bool, ArNetPacket *, struct sockaddr_in * > * | mySendUdpCB |
std::string | myServerKey |
sockaddr_in | mySin |
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 |
Classes | |
class | Tracker |
Definition at line 45 of file ArServerClient.h.
|
The state of the connection.
Definition at line 49 of file ArServerClient.h. |
|
Constructor.
Definition at line 68 of file ArServerClient.cpp. References ArNetPacket::empty(), internalSwitchState(), myAuthKey, myDataMap, myIntroKey, myPasswordKey, myProcessPacketCB, myRejecting, myRejectingString, mySendUdpCB, myServerKey, myTcpOnly, myTcpReceiver, myTcpSender, myTcpSocket, myUserInfo, pushCommand(), resetTracking(), sendPacketTcp(), ArSocket::setCloseCallback(), ArNetPacket::setCommand(), ArSocket::setNonBlock(), ArNetPacketReceiverTcp::setProcessPacketCB(), ArNetPacketSenderTcp::setSocket(), ArNetPacketReceiverTcp::setSocket(), STATE_SENT_INTRO, ArBasePacket::strToBuf(), ArSocket::transfer(), ArBasePacket::uByte2ToBuf(), and ArBasePacket::uByte4ToBuf(). |
|
Destructor. MPL fixing a memory leak Definition at line 115 of file ArServerClient.cpp. References ArServerData::callRequestChangedFunctor(), ArSocket::close(), ArUtil::deleteSetPairs(), myRequested, myTcpReceiver, myTcpSocket, myTrackingReceivedMap, myTrackingSentMap, ArNetPacketReceiverTcp::setProcessPacketCB(), and ArNetPacketReceiverTcp::setSocket(). |
|
Broadcasts a packet over TCP if this client wants this data -- For internal use only!
For internal use only.
Definition at line 656 of file ArServerClient.cpp. References ArServerData::getCommand(), ArServerClientData::getServerData(), myRequested, and sendPacketTcp(). |
|
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!
For internal use only.
Definition at line 678 of file ArServerClient.cpp. References ArServerData::getCommand(), ArServerClientData::getServerData(), myRequested, and sendPacketUdp(). |
|
Forcibly disconnect a client (for client/server switching).
Definition at line 613 of file ArServerClient.cpp. References ArSocket::getIPString(), internalSwitchState(), ArLog::log(), myTcpSocket, and STATE_DISCONNECTED. |
|
Gets the authKey used for setting up UDP from this client to the server.
Definition at line 755 of file ArServerClient.cpp. References myAuthKey. |
|
Definition at line 760 of file ArServerClient.cpp. References myCommandStack. Referenced by setupPacket(). |
|
Gets how often a command is asked for.
Definition at line 1037 of file ArServerClient.cpp. References ArServerData::getCommand(), ArServerClientData::getMSec(), ArServerClientData::getServerData(), and myRequested. |
|
Gets the IP string of the client.
Definition at line 789 of file ArServerClient.cpp. References ArSocket::getIPString(), and myTcpSocket. Referenced by logTracking(). |
|
Internal function to get the tcp socket.
Definition at line 127 of file ArServerClient.h. References myTcpSocket. |
|
Gets the sin (network address) for the UDP socket.
Definition at line 750 of file ArServerClient.cpp. References mySin. |
|
Handles the requests for packets.
Definition at line 179 of file ArServerClient.cpp. References ArServerData::getCommand(), ArServerData::getFunctor(), ArServerClientData::getLastSent(), ArServerClientData::getMSec(), ArServerClientData::getPacket(), ArServerClientData::getServerData(), ArFunctor2< P1, P2 >::invoke(), ArTime::mSecSince(), myRequested, popCommand(), pushCommand(), and ArServerClientData::setLastSentToNow(). |
|
Sees if this client has access to a given group.
Definition at line 1019 of file ArServerClient.cpp. References myGroups, and myUserInfo. |
|
Definition at line 147 of file ArServerClient.cpp. References myState, myStateStart, and ArTime::setToNow(). Referenced by ArServerClient(), forceDisconnect(), and processPacket(). |
|
Logs the tracking information (packet and byte counts).
Definition at line 828 of file ArServerClient.cpp. References ArSocket::getBytesRecvd(), ArSocket::getBytesSent(), getIPString(), ArSocket::getRecvs(), ArSocket::getSends(), ArLog::log(), ArServerClient::Tracker::myBytesTcp, ArServerClient::Tracker::myBytesUdp, myDataMap, ArServerClient::Tracker::myPacketsTcp, ArServerClient::Tracker::myPacketsUdp, myTcpSocket, myTrackingReceivedMap, myTrackingSentMap, myTrackingStarted, and ArTime::secSince(). |
|
Definition at line 770 of file ArServerClient.cpp. References ArLog::log(), and myCommandStack. Referenced by handleRequests(), and processPacket(). |
|
Processes the auth packets that came from udp.
Definition at line 621 of file ArServerClient.cpp. References ArBasePacket::byte4ToBuf(), ArNetPacket::empty(), ArLog::log(), myAuthKey, myIntroKey, mySin, myUdpConfirmedFrom, sendPacketTcp(), sendPacketUdp(), and ArNetPacket::setCommand(). |
|
|
Definition at line 765 of file ArServerClient.cpp. References myCommandStack. Referenced by ArServerClient(), handleRequests(), and processPacket(). |
|
Clears the tracking information (resets counters).
Definition at line 1002 of file ArServerClient.cpp. References myTcpSocket, myTrackingReceivedMap, myTrackingSentMap, myTrackingStarted, ArSocket::resetTracking(), and ArTime::setToNow(). Referenced by ArServerClient(). |
|
|
Send a packet over TCP. The command ID of the outgoing packet will be set to the current command ID (from the incoming packet). Definition at line 700 of file ArServerClient.cpp. References myTcpSender, ArNetPacketSenderTcp::sendPacket(), setupPacket(), and trackPacketSent(). Referenced by ArServerClient(), broadcastPacketTcp(), processAuthPacket(), processPacket(), sendListPacket(), sendPacketUdp(), and shutdown(). |
|
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). Definition at line 712 of file ArServerClient.cpp. References ArRetFunctor2< Ret, P1, P2 >::invokeR(), mySendUdpCB, mySin, myTcpOnly, sendPacketTcp(), setupPacket(), and trackPacketSent(). Referenced by broadcastPacketUdp(), processAuthPacket(), and processPacket(). |
|
Sets the sin (network address) for the UDP socket.
Definition at line 745 of file ArServerClient.cpp. References mySin. Referenced by processPacket(). |
|
Definition at line 728 of file ArServerClient.cpp. References getCommand(), ArLog::log(), myState, and STATE_DISCONNECTED. Referenced by sendPacketTcp(), and sendPacketUdp(). |
|
Sends a shutdown command to the socket.
Definition at line 780 of file ArServerClient.cpp. References myTcpSender, ArNetPacketSenderTcp::sendData(), sendPacketTcp(), and ArNetPacket::setCommand(). |
|
The callback for taking care of the TCP connection.
Definition at line 153 of file ArServerClient.cpp. References ArSocket::getIPString(), ArLog::log(), myState, myTcpReceiver, myTcpSender, myTcpSocket, ArNetPacketReceiverTcp::readData(), ArNetPacketSenderTcp::sendData(), ArUtil::sleep(), STATE_DISCONNECTED, and STATE_REJECTED. |
|
Definition at line 811 of file ArServerClient.cpp. References myTrackingReceivedMap. Referenced by processPacket(). |
|
Definition at line 794 of file ArServerClient.cpp. References myTrackingSentMap. Referenced by sendPacketTcp(), and sendPacketUdp(). |
|
Definition at line 163 of file ArServerClient.h. Referenced by ArServerClient(), getAuthKey(), and processAuthPacket(). |
|
Definition at line 134 of file ArServerClient.h. Referenced by getCommand(), popCommand(), and pushCommand(). |
|
Definition at line 151 of file ArServerClient.h. Referenced by ArServerClient(), logTracking(), processPacket(), and sendListPacket(). |
|
Definition at line 149 of file ArServerClient.h. Referenced by hasGroupAccess(), processPacket(), and sendListPacket(). |
|
Definition at line 164 of file ArServerClient.h. Referenced by ArServerClient(), processAuthPacket(), and processPacket(). |
|
Definition at line 166 of file ArServerClient.h. Referenced by ArServerClient(), and processPacket(). |
|
Definition at line 160 of file ArServerClient.h. Referenced by ArServerClient(). |
|
Definition at line 169 of file ArServerClient.h. Referenced by ArServerClient(), and processPacket(). |
|
Definition at line 170 of file ArServerClient.h. Referenced by ArServerClient(), and processPacket(). |
|
Definition at line 152 of file ArServerClient.h. Referenced by broadcastPacketTcp(), broadcastPacketUdp(), getFrequency(), handleRequests(), processPacket(), and ~ArServerClient(). |
|
Definition at line 161 of file ArServerClient.h. Referenced by ArServerClient(), and sendPacketUdp(). |
|
Definition at line 167 of file ArServerClient.h. Referenced by ArServerClient(), and processPacket(). |
|
Definition at line 162 of file ArServerClient.h. Referenced by getUdpAddress(), processAuthPacket(), sendPacketUdp(), and setUdpAddress(). |
|
Definition at line 154 of file ArServerClient.h. Referenced by internalSwitchState(), processPacket(), setupPacket(), and tcpCallback(). |
|
Definition at line 155 of file ArServerClient.h. Referenced by internalSwitchState(). |
|
Definition at line 165 of file ArServerClient.h. Referenced by ArServerClient(), processPacket(), and sendPacketUdp(). |
|
Definition at line 159 of file ArServerClient.h. Referenced by ArServerClient(), tcpCallback(), and ~ArServerClient(). |
|
Definition at line 150 of file ArServerClient.h. Referenced by ArServerClient(), sendPacketTcp(), shutdown(), and tcpCallback(). |
|
Definition at line 158 of file ArServerClient.h. Referenced by ArServerClient(), forceDisconnect(), getIPString(), getTcpSocket(), logTracking(), processPacket(), resetTracking(), tcpCallback(), and ~ArServerClient(). |
|
Definition at line 189 of file ArServerClient.h. Referenced by logTracking(), resetTracking(), trackPacketReceived(), and ~ArServerClient(). |
|
Definition at line 188 of file ArServerClient.h. Referenced by logTracking(), resetTracking(), trackPacketSent(), and ~ArServerClient(). |
|
Definition at line 173 of file ArServerClient.h. Referenced by logTracking(), and resetTracking(). |
|
Definition at line 156 of file ArServerClient.h. Referenced by processAuthPacket(). |
|
Definition at line 157 of file ArServerClient.h. Referenced by processPacket(). |
|
Definition at line 148 of file ArServerClient.h. Referenced by ArServerClient(), hasGroupAccess(), processPacket(), and sendListPacket(). |