Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages | Examples

ArServerHandlerCommMonitor.h

Go to the documentation of this file.
00001 /*
00002 MobileRobots Advanced Robotics Interface for Applications (ARIA)
00003 Copyright (C) 2004, 2005 ActivMedia Robotics LLC
00004 Copyright (C) 2006, 2007 MobileRobots Inc.
00005 
00006      This program is free software; you can redistribute it and/or modify
00007      it under the terms of the GNU General Public License as published by
00008      the Free Software Foundation; either version 2 of the License, or
00009      (at your option) any later version.
00010 
00011      This program is distributed in the hope that it will be useful,
00012      but WITHOUT ANY WARRANTY; without even the implied warranty of
00013      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014      GNU General Public License for more details.
00015 
00016      You should have received a copy of the GNU General Public License
00017      along with this program; if not, write to the Free Software
00018      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020 If you wish to redistribute ARIA under different terms, contact 
00021 MobileRobots for information about a commercial version of ARIA at 
00022 robots@mobilerobots.com or 
00023 MobileRobots Inc, 19 Columbia Drive, Amherst, NH 03031; 800-639-9481
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   // Packet Handlers:
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 }; // end class ArServerHandlerCommMonitor
00147 
00148 #endif // ARSERVERHANDLERCOMMMONITOR_H

Generated on Tue Feb 20 10:51:50 2007 for ArNetworking by  doxygen 1.4.0