00001
00002 #ifndef INCLUDED_WorldStateSerializer_h
00003 #define INCLUDED_WorldStateSerializer_h
00004
00005 #include "Behaviors/BehaviorBase.h"
00006 #include "Shared/Config.h"
00007
00008 class Socket;
00009
00010
00011
00012
00013
00014 class WorldStateSerializerBehavior : public BehaviorBase {
00015 public:
00016 WorldStateSerializerBehavior();
00017
00018 virtual void DoStart();
00019 virtual void DoStop();
00020 virtual void processEvent(const EventBase& e);
00021 virtual std::string getName() const { return "World State Serializer"; }
00022 static std::string getClassDescription() {
00023 char tmp[80];
00024 sprintf(tmp,"Sends sensor information to port %d and current pid values to port %d",config->main.wsjoints_port,config->main.wspids_port);
00025 return tmp;
00026 }
00027
00028 protected:
00029
00030 template<class T>
00031 inline static void encode(char **dst, const T& value) {
00032 memcpy(*dst, &value, sizeof(T));
00033
00034
00035 (*dst) += sizeof(T);
00036 }
00037
00038
00039 template<class T>
00040 inline static void encode(char **dst, const T * src, int num) {
00041 memcpy(*dst, src, num*sizeof(T));
00042 (*dst) += num*sizeof(T);
00043 }
00044
00045 Socket *wsJoints;
00046 Socket *wsPIDs;
00047
00048 private:
00049 WorldStateSerializerBehavior(const WorldStateSerializerBehavior&);
00050 WorldStateSerializerBehavior& operator= (const WorldStateSerializerBehavior&);
00051 };
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064 #endif