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 ARSERVERHANDLERCOMMANDS_H
00027 #define ARSERVERHANDLERCOMMANDS_H
00028
00029 #include "Aria.h"
00030 #include "ArServerBase.h"
00031
00033
00038 class ArServerHandlerCommands
00039 {
00040 public:
00042 AREXPORT ArServerHandlerCommands(ArServerBase *server);
00044 AREXPORT virtual ~ArServerHandlerCommands();
00046 AREXPORT bool addCommand(const char *name, const char *description,
00047 ArFunctor *functor,
00048 const char *commandGroup = NULL);
00050 AREXPORT bool addStringCommand(const char *name, const char *description,
00051 ArFunctor1<ArArgumentBuilder *> *functor,
00052 const char *commandGroup = NULL);
00054 AREXPORT void setPrefix(const char *prefix);
00056 AREXPORT const char *getPrefix(void);
00058 AREXPORT void netListCommands(ArServerClient *client, ArNetPacket *packet);
00060 AREXPORT void netListStringCommands(ArServerClient *client,
00061 ArNetPacket *packet);
00062
00063 protected:
00064 ArServerBase *myServer;
00065 void netParseCommand(ArServerClient *client, ArNetPacket *packet,
00066 ArFunctor *functor);
00067 void netParseStringCommand(ArServerClient *client, ArNetPacket *packet,
00068 ArFunctor1<ArArgumentBuilder *> *functor);
00069 std::list<std::string> myCommands;
00070 std::list<std::string> myCommandDescriptions;
00071 std::list<std::string> myStringCommands;
00072 std::list<std::string> myStringCommandDescriptions;
00073 std::string myPrefix;
00074 ArFunctor2C<ArServerHandlerCommands,
00075 ArServerClient *, ArNetPacket *> myNetListCommandsCB;
00076 ArFunctor2C<ArServerHandlerCommands,
00077 ArServerClient *, ArNetPacket *> myNetListStringCommandsCB;
00078 };
00079
00080 #endif