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 ARSERVERHANDLERSTRINGS_H
00027 #define ARSERVERHANDLERSTRINGS_H
00028
00029 #include "Aria.h"
00030 #include "ArServerBase.h"
00031
00032 class ArServerClient;
00033
00046 class ArServerInfoStrings
00047 {
00048 public:
00050 AREXPORT ArServerInfoStrings(ArServerBase *server);
00052 AREXPORT ~ArServerInfoStrings();
00054 AREXPORT void netGetStringsInfo(ArServerClient *client,
00055 ArNetPacket *packet);
00057 AREXPORT void netGetStrings(ArServerClient *client,
00058 ArNetPacket *packet);
00060 AREXPORT void addString(const char *name, ArTypes::UByte2 maxLen,
00061 ArFunctor2<char *, ArTypes::UByte2> *functor);
00063 ArFunctor3<const char *, ArTypes::UByte2,
00064 ArFunctor2<char *, ArTypes::UByte2> *> *
00065 getAddStringFunctor(void) { return &myAddStringFunctor; }
00066
00067 protected:
00068 ArServerBase *myServer;
00069
00070 AREXPORT void buildStringsInfoPacket(void);
00071 ArNetPacket myStringInfoPacket;
00072 AREXPORT void buildStringsPacket(void);
00073 ArNetPacket myStringPacket;
00074 ArTime myLastStringPacketBuild;
00075
00076 std::list<ArStringInfoHolder *> myStrings;
00077 ArTypes::UByte2 myMaxMaxLength;
00078 ArMutex myStringsMutex;
00079 ArFunctor3C<ArServerInfoStrings, const char *, ArTypes::UByte2,
00080 ArFunctor2<char *, ArTypes::UByte2> *> myAddStringFunctor;
00081
00082 ArFunctor2C<ArServerInfoStrings, ArServerClient *,
00083 ArNetPacket *> myNetGetStringsInfoCB;
00084 ArFunctor2C<ArServerInfoStrings, ArServerClient *,
00085 ArNetPacket *> myNetGetStringsCB;
00086
00087 };
00088
00089 #endif // ARSERVERHANDLERSTRINGS_H