File: ArServerHandlerCommands.h

package info (click to toggle)
libaria 2.8.0%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 13,628 kB
  • ctags: 16,574
  • sloc: cpp: 135,490; makefile: 925; python: 597; java: 570; ansic: 182
file content (69 lines) | stat: -rw-r--r-- 2,607 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef ARSERVERHANDLERCOMMANDS_H
#define ARSERVERHANDLERCOMMANDS_H

#include "Aria.h"
#include "ArServerBase.h"

/// Class for having commands that can be called easily on the client
/**
   You can add commands with addCommand and addStringCommand, you can
   get the list of commands by requesting the data "listCommands" and
   "listStringCommands".
 **/
class ArServerHandlerCommands
{
public:
  /// Constructor
  AREXPORT ArServerHandlerCommands(ArServerBase *server);
  /// Destructor
  AREXPORT virtual ~ArServerHandlerCommands();
  /// Sets the text server 
  AREXPORT void setTextServer(ArNetServer *textServer)
		{ myTextServer = textServer; }
  /// Adds a command with no arguments
  AREXPORT bool addCommand(const char *name, const char *description,
			   ArFunctor *functor, 
			   const char *commandGroup = NULL);
  /// Adds a command that takes a string argument
  AREXPORT bool addStringCommand(const char *name, const char *description,
				 ArFunctor1<ArArgumentBuilder *> *functor, 
				 const char *commandGroup = NULL);
  /// Sets a prefix for commands 
  AREXPORT void setPrefix(const char *prefix);
  /// Gets the prefix
  AREXPORT const char *getPrefix(void);
  /// The function that lists the commands
  AREXPORT void netListCommands(ArServerClient *client, ArNetPacket *packet);
  /// The function that lists the string commands
  AREXPORT void netListStringCommands(ArServerClient *client, 
				      ArNetPacket *packet);
  
protected:
  ArServerBase *myServer;
  ArNetServer *myTextServer;
  void netParseCommand(ArServerClient *client, ArNetPacket *packet, 
		       ArFunctor *functor);
  void netParseStringCommand(ArServerClient *client, ArNetPacket *packet, 
			     ArFunctor1<ArArgumentBuilder *> *functor);

  void textParseCommand(char **argv, int argc, ArSocket *socket, ArFunctor *functor);
  void textParseStringCommand(char **argv, int argc, ArSocket *socket, 
																		ArFunctor1<ArArgumentBuilder *> *functor);

  std::list<std::string> myCommands;
  std::list<std::string> myCommandDescriptions;
  std::list<std::string> myStringCommands;
  std::list<std::string> myStringCommandDescriptions;
  std::list<ArFunctor3<ArServerClient *, ArNetPacket *,
		       ArFunctor *> *> myFunctors;
  std::list<ArFunctor3<ArServerClient *, ArNetPacket *, 
		       ArFunctor1<ArArgumentBuilder *> *> *> myStringFunctors;
  std::string myPrefix;
  ArFunctor2C<ArServerHandlerCommands, 
      ArServerClient *, ArNetPacket *> myNetListCommandsCB;
  ArFunctor2C<ArServerHandlerCommands, 
      ArServerClient *, ArNetPacket *> myNetListStringCommandsCB;

};

#endif