Changeset 7671 in orxonox.OLD for branches/network/src/lib/network/message_manager.h
- Timestamp:
- May 18, 2006, 10:48:17 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/network/src/lib/network/message_manager.h
r7631 r7671 9 9 #include "synchronizeable.h" 10 10 11 // FORWARD DECLARATION 11 #include <map> 12 #include <list> 13 14 /* 15 Protocol: 16 int nacks 17 int acks[1..nacks] 18 int nmsg 19 ( 20 int length 21 int number 22 byte MessageId 23 byte * data 24 )[1..nmsg] 25 */ 26 27 typedef void (*MessageCallback)( byte * data, int dataLength, void * someData, int userId ); 28 29 30 enum MessageId 31 { 32 }; 33 34 enum RecieverType 35 { 36 RT_ALL = 1, //!< message is sent to all users 37 RT_USER, //!< message is only sent to reciever 38 RT_NOT_USER //!< message is sent to all but reciever 39 }; 40 41 struct NetworkMessage 42 { 43 MessageId messageId; 44 byte * data; 45 int length; 46 int number; 47 }; 48 49 struct MessageUserQueue 50 { 51 std::list<NetworkMessage> messages; 52 std::list<int> toAck; 53 }; 54 55 typedef std::map<int,MessageUserQueue> MessageQueue; 56 57 struct MessageHandler 58 { 59 MessageCallback cb; 60 MessageId messageId; 61 }; 62 63 typedef std::map<MessageId,MessageHandler> MessageHandlerMap; 12 64 13 65 //! A class for sending messages over network 14 66 class MessageManager : public Synchronizeable { 15 67 protected: 68 MessageManager(); 16 69 public: 17 MessageManager(); 70 inline static MessageManager * getInstance(){ if (!singletonRef) singletonRef = new MessageManager(); return singletonRef; } 71 18 72 virtual ~MessageManager(); 73 74 bool registerMessageHandler( MessageId messageId, MessageCallback cb, void * someData ); 75 76 void sendMessage( MessageId messageId, byte * data, int dataLength, RecieverType recieverType, int reciever ); 19 77 20 78 virtual int getStateDiff( int userId, byte* data, int maxLength, int stateId, int fromStateId, int priorityTH ); 21 79 virtual int setStateDiff( int userId, byte* data, int length, int stateId, int fromStateId ); 22 80 virtual void cleanUpUser( int userId ); 81 82 void initUser( int userId ); 23 83 24 84 25 85 private: 86 static MessageManager * singletonRef; 87 MessageQueue messageQueue; //!< stores messages to send 88 MessageHandlerMap messageHandlerMap; //!< contains handlers for messages 26 89 27 90 };
Note: See TracChangeset
for help on using the changeset viewer.