Revision: 1722
http://svn.sourceforge.net/yake/?rev=1722&view=rev
Author: psyclonist
Date: 2007-04-20 13:35:54 -0700 (Fri, 20 Apr 2007)
Log Message:
-----------
Added Paths:
-----------
trunk/yake/samples/net/common/commonEvents.h
Added: trunk/yake/samples/net/common/commonEvents.h
===================================================================
--- trunk/yake/samples/net/common/commonEvents.h (rev 0)
+++ trunk/yake/samples/net/common/commonEvents.h 2007-04-20 20:35:54 UTC (rev 1722)
@@ -0,0 +1,138 @@
+#ifndef TEST_COMMONEVENTS_H
+#define TEST_COMMONEVENTS_H
+
+#include <yake/ent/ent.h>
+
+#include <map>
+
+const yake::net::ChannelId CHANNELID_CONTROL = 0;
+const yake::net::ChannelId CHANNELID_SIMCTRL = 1;
+const yake::net::ChannelId CHANNELID_SIMUPD = 2;
+const yake::net::ChannelId CHANNELID_COMM = 3;
+
+//---
+/*
+// pull in types
+typedef yake::net::INetEventConnection::CreateEventFn CreateEventFn;
+typedef yake::net::INetEventConnection::DestroyEventFn DestroyEventFn;
+
+// event pool
+struct EventPool
+{
+ EventPool();
+ ~EventPool();
+ void register_class(const yake::net::NetEvent::id_type id, const CreateEventFn&, const DestroyEventFn&);
+ {
+ classes_.insert( std::make_pair( id, ClassEntry(createFn,destroyFn) ) );
+ }
+ yake::net::NetEvent* create(const yake::net::NetEvent::id_type);
+ void destroy(yake::net::NetEvent*);
+ void lookup(const yake::net::NetEvent::id_type id, CreateEventFn&, DestroyEventFn&);
+private:
+ typedef std::deque<yake::net::NetEvent*> EventList;
+ struct ClassEntry
+ {
+ CreateEventFn createFn_;
+ DestroyEventFn destroyFn_;
+ EventList avail_;
+ EventList taken_;
+ };
+ typedef std::map<yake::net::NetEvent::id_type,ClassEntry> ClassMap; //<= perfect candidate for AssocVector
+ ClassMap classes_;
+};
+
+// event registrator for use with pooled events and event connections
+template<typename evt_type>
+bool s_registerEvent(const EventPool& evtpool,
+ const yake::net::IEventConnection& conn,
+ const yake::net::NetEvent::id_type id,
+ const yake::net::NetEvent::Direction dir)
+{
+ CreateEventFn createFn = boost::bind(&EventPool::create,&evtpool,_1);
+ DestroyEventFn destroyFn = boost::bind(&EventPool::destroy,&evtpool,_1);;
+ conn.registerEvent(id,dir,ce.createFn,ce.destroyFn);
+}
+*/
+//---
+
+struct version_t
+{
+ yake::uint8 ver[3];
+ version_t()
+ {
+ ver[0] = 0;
+ ver[1] = 0;
+ ver[2] = 0;
+ }
+ version_t(const yake::uint8 maj, const yake::uint8 min, const yake::uint8 b)
+ {
+ ver[0] = maj;
+ ver[1] = min;
+ ver[2] = b;
+ }
+};
+inline yake::net::obitstream& operator << (yake::net::obitstream& out, const version_t& rhs)
+{
+ out.write( rhs.ver[0], 8 );
+ out.write( rhs.ver[1], 8 );
+ out.write( rhs.ver[2], 8 );
+ return out;
+}
+inline yake::net::ibitstream& operator >> (yake::net::ibitstream& in, version_t& rhs)
+{
+ in.read( rhs.ver[0], 8 );
+ in.read( rhs.ver[1], 8 );
+ in.read( rhs.ver[2], 8 );
+ return in;
+}
+
+struct c2sEvtJoinReq : public yake::net::NetEvent
+{
+ DECLARE_EVENT( c2sEvtJoinReq, 1 );
+ virtual bool pack(yake::net::obitstream& out) const
+ {
+ out << version;;
+ return true;
+ }
+ virtual bool unpack(yake::net::ibitstream& in)
+ {
+ in >> version;
+ return true;
+ }
+ version_t version;
+};
+
+struct s2cEvtJoinReqReply : public yake::net::NetEvent
+{
+ DECLARE_EVENT( s2cEvtJoinReqReply, 2 );
+ virtual bool pack(yake::net::obitstream& out) const
+ {
+ out.write( accepted );
+ //std::string msg("i wanna join!");
+ //out << msg;
+ return true;
+ }
+ virtual bool unpack(yake::net::ibitstream& in)
+ {
+ in.read( accepted );
+
+ //std::string msg;
+ //in >> msg;
+ //COUTLN("MSG: " << msg.c_str());
+ return true;
+ }
+ bool accepted;
+};
+struct c2sEvtSimOk : public yake::net::NetEvent
+{
+ DECLARE_EVENT( c2sEvtSimOk, 11 );
+ virtual bool pack(yake::net::obitstream& out) const
+ {
+ return true;
+ }
+ virtual bool unpack(yake::net::ibitstream& in)
+ {
+ return true;
+ }
+};
+#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|