00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef ARSERVERHANDLERCOMMMONITOR_H
00027 #define ARSERVERHANDLERCOMMMONITOR_H
00028
00029 #include "Aria.h"
00030
00031 #include "ArNetworking.h"
00032
00034
00055 class ArServerHandlerCommMonitor
00056 {
00057 public:
00058
00059 enum {
00060 MIN_HEARTBEAT_INTERVAL = 100,
00061 DEFAULT_HEARTBEAT_INTERVAL = 500
00062 };
00063
00065 AREXPORT static const char *HEARTBEAT_TCP_PACKET_NAME;
00067 AREXPORT static const char *HEARTBEAT_UDP_PACKET_NAME;
00068
00070 AREXPORT static const char *GET_HEARTBEAT_INTERVAL_PACKET_NAME;
00072 AREXPORT static const char *ACK_COMM_TCP_PACKET_NAME;
00074 AREXPORT static const char *ACK_COMM_UDP_PACKET_NAME;
00075
00076
00077 AREXPORT static const char *COMMAND_GROUP;
00078 AREXPORT static const char *NO_ARGS;
00079
00080
00082
00086 AREXPORT ArServerHandlerCommMonitor(ArServerBase *server,
00087 int heartbeatInterval = DEFAULT_HEARTBEAT_INTERVAL);
00088
00089
00091 AREXPORT virtual ~ArServerHandlerCommMonitor();
00092
00093
00094
00095
00096
00097
00099
00103 AREXPORT void handleGetHeartbeatInterval(ArServerClient *client, ArNetPacket *packet);
00104
00106
00110 AREXPORT void handleAckCommTcp(ArServerClient *client, ArNetPacket *packet);
00111
00112
00114
00118 AREXPORT void handleAckCommUdp(ArServerClient *client, ArNetPacket *packet);
00119
00120
00122 AREXPORT void cycleCallback();
00123
00124 protected:
00125
00127 ArServerBase *myServer;
00128
00130 int myHeartbeatInterval;
00132 ArTime myLastHeartbeatTime;
00133
00135 ArFunctor2C<ArServerHandlerCommMonitor,
00136 ArServerClient *, ArNetPacket *> myGetHeartbeatIntervalCB;
00138 ArFunctor2C<ArServerHandlerCommMonitor,
00139 ArServerClient *, ArNetPacket *> myAckCommUdpCB;
00141 ArFunctor2C<ArServerHandlerCommMonitor,
00142 ArServerClient *, ArNetPacket *> myAckCommTcpCB;
00144 ArFunctorC<ArServerHandlerCommMonitor> myCycleCB;
00145
00146 };
00147
00148 #endif // ARSERVERHANDLERCOMMMONITOR_H