Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 9656 in orxonox.OLD for trunk/src/lib/network/message_manager.h


Ignore:
Timestamp:
Aug 4, 2006, 11:01:28 PM (18 years ago)
Author:
bensch
Message:

orxonox/trunk: merged the proxy bache back with no conflicts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/network/message_manager.h

    r9494 r9656  
    2020      int length
    2121      int number
    22       int MessageId
     22      int MessageType
    2323      byte * data
    2424    )[1..nmsg]
     
    2626
    2727
    28 enum MessageId
     28//!< different message ids
     29enum MessageType
    2930{
    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
    3641};
    3742
    38 typedef bool (*MessageCallback)( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
    3943
    40 enum RecieverType
     44typedef bool (*MessageCallback)( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId );
     45
     46typedef enum RecieverType
    4147{
    4248  RT_ALL_BUT_ME = 1,   //!< message is sent to all users but myself
     
    5763struct NetworkMessage
    5864{
    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
    6473};
    6574
     
    7382typedef std::map<int,MessageUserQueue> MessageQueue;
    7483
     84
     85
    7586struct MessageHandler
    7687{
    77   MessageCallback cb;
    78   MessageId       messageId;
    79   void *          someData;
     88  MessageCallback   cb;
     89  MessageType       messageType;
     90  void *            someData;
    8091};
    8192
    82 typedef std::map<MessageId,MessageHandler> MessageHandlerMap;
     93typedef std::map<MessageType,MessageHandler> MessageHandlerMap;
    8394
    8495//! A class for sending messages over network
    8596class MessageManager : public Synchronizeable {
    86  protected:
    87    MessageManager();
     97
     98
    8899 public:
    89100   inline static MessageManager * getInstance(){ if (!singletonRef) singletonRef = new MessageManager();  return singletonRef; }
     
    91102   virtual ~MessageManager();
    92103
    93    bool registerMessageHandler( MessageId messageId, MessageCallback cb, void * someData );
     104   bool registerMessageHandler( MessageType messageType, MessageCallback cb, void * someData );
    94105
    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 );
    96108
     109   void initUser( int userId );
     110
     111   void processData();
     112
     113
     114  protected:
     115    MessageManager();
     116
     117
     118  private:
    97119   virtual int getStateDiff( int userId, byte* data, int maxLength, int stateId, int fromStateId, int priorityTH );
    98120   virtual int setStateDiff( int userId, byte* data, int length, int stateId, int fromStateId );
     
    101123   virtual void handleRecvState( int userId, int stateId, int fromStateId ){}
    102124
    103    void initUser( int userId );
    104 
    105125
    106126 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
    109131   MessageHandlerMap         messageHandlerMap;      //!< contains handlers for messages
    110132
    111133   int                       newNumber;              //!< used to create unique message numbers
    112    std::list<NetworkMessage> incomingMessageBuffer;
     134
    113135
    114136};
    115137
    116 #endif /* _PROTO_CLASS_H */
     138#endif /* _MESSAGE_MANAGER_H */
Note: See TracChangeset for help on using the changeset viewer.