Changeset 9656 in orxonox.OLD for trunk/src/lib/network/message_manager.h
- Timestamp:
- Aug 4, 2006, 11:01:28 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/network/message_manager.h
r9494 r9656 20 20 int length 21 21 int number 22 int Message Id22 int MessageType 23 23 byte * data 24 24 )[1..nmsg] … … 26 26 27 27 28 enum MessageId 28 //!< different message ids 29 enum MessageType 29 30 { 30 TESTMESSAGEID = 1, 31 MSGID_DELETESYNCHRONIZEABLE, 32 MSGID_PREFEREDTEAM, 33 MSGID_CHANGENICKNAME, 34 MSGID_CHATMESSAGE, 35 MSGID_RESPAWN 31 TESTMESSAGEID = 1, //!< for testing purposes 32 MSGID_DELETESYNCHRONIZEABLE, //!< message for sync deletion 33 MSGID_PREFEREDTEAM, //!< change prefered team 34 MSGID_CHANGENICKNAME, //!< change nicknames 35 MSGID_CHATMESSAGE, //!< chat message 36 MSGID_RESPAWN, //!< respawn message 37 38 MSGID_PROXY_NEWCLIENT, //!< informs the master server about a new client 39 MSGID_PROXY_LEAVECLIENT, //!< informs the master and other proxy servers about a leaving client 40 MSGID_PROXY_COMMAND, //!< command handler: delivers commands from and to proxies/clients 36 41 }; 37 42 38 typedef bool (*MessageCallback)( MessageId messageId, byte * data, int dataLength, void * someData, int userId );39 43 40 enum RecieverType 44 typedef bool (*MessageCallback)( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId ); 45 46 typedef enum RecieverType 41 47 { 42 48 RT_ALL_BUT_ME = 1, //!< message is sent to all users but myself … … 57 63 struct NetworkMessage 58 64 { 59 MessageId messageId; 60 byte * data; 61 int length; 62 int number; 63 MessagePriority priority; 65 MessageType messageType; //!< type of the message 66 byte * data; //!< data 67 int length; //!< length of the data 68 int number; //!< serial number 69 int senderId; //!< userId of the sender 70 int destinationId; //!< userId of the destination 71 RecieverType recieverType; //!< type of the receiver 72 MessagePriority priority; //!< priority of the messages 64 73 }; 65 74 … … 73 82 typedef std::map<int,MessageUserQueue> MessageQueue; 74 83 84 85 75 86 struct MessageHandler 76 87 { 77 MessageCallback cb;78 Message Id messageId;79 void * someData;88 MessageCallback cb; 89 MessageType messageType; 90 void * someData; 80 91 }; 81 92 82 typedef std::map<Message Id,MessageHandler> MessageHandlerMap;93 typedef std::map<MessageType,MessageHandler> MessageHandlerMap; 83 94 84 95 //! A class for sending messages over network 85 96 class MessageManager : public Synchronizeable { 86 protected: 87 MessageManager(); 97 98 88 99 public: 89 100 inline static MessageManager * getInstance(){ if (!singletonRef) singletonRef = new MessageManager(); return singletonRef; } … … 91 102 virtual ~MessageManager(); 92 103 93 bool registerMessageHandler( Message Id messageId, MessageCallback cb, void * someData );104 bool registerMessageHandler( MessageType messageType, MessageCallback cb, void * someData ); 94 105 95 void sendMessage( MessageId messageId, byte * data, int dataLength, RecieverType recieverType, int reciever, MessagePriority messagePriority ); 106 void sendMessage( MessageType messageType, byte * data, int dataLength, RecieverType recieverType, int reciever, MessagePriority messagePriority ); 107 void sendMessage( MessageType messageType, byte * data, int dataLength, RecieverType recieverType, int sender, int reciever, MessagePriority messagePriority ); 96 108 109 void initUser( int userId ); 110 111 void processData(); 112 113 114 protected: 115 MessageManager(); 116 117 118 private: 97 119 virtual int getStateDiff( int userId, byte* data, int maxLength, int stateId, int fromStateId, int priorityTH ); 98 120 virtual int setStateDiff( int userId, byte* data, int length, int stateId, int fromStateId ); … … 101 123 virtual void handleRecvState( int userId, int stateId, int fromStateId ){} 102 124 103 void initUser( int userId );104 105 125 106 126 private: 107 static MessageManager * singletonRef; 108 MessageQueue messageQueue; //!< stores messages to send 127 static MessageManager * singletonRef; //!< the singleton reference 128 129 std::list<NetworkMessage> incomingMessageQueue; //!< the incoming message buffer 130 MessageQueue outgoingMessageQueue; //!< stores messages to send 109 131 MessageHandlerMap messageHandlerMap; //!< contains handlers for messages 110 132 111 133 int newNumber; //!< used to create unique message numbers 112 std::list<NetworkMessage> incomingMessageBuffer; 134 113 135 114 136 }; 115 137 116 #endif /* _ PROTO_CLASS_H */138 #endif /* _MESSAGE_MANAGER_H */
Note: See TracChangeset
for help on using the changeset viewer.