VR-Exchange 2.7 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
queueManager.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2014 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <portal/pMessageFactory.h>
13 #include <portal/pControlMessage.h>
14 #include <portal/memoryManager.h>
15 
16 #include <vlutil/vlInetSocketMgr.h>
17 #include <vlutil/vlTime.h>
18 
19 #include <list>
20 #include <map>
21 
22 namespace MAKVrExchange
23 {
24 
25  class DtPortalObject;
26  class DtPortalMessage;
27  class DtSubscribableMessageQueue;
28 
31  //
36  //
41  {
42  public:
43 
44  typedef void (*MessageCbFcn)( const DtPortalMessage& message, void* usr );
45 
46  public:
47 
49  static DtQueueManager* create( DtU32 numberOfBucketsInQueue,
50  DtU32 payloadSizePerBucket, int port, DtU16 theBrokerId,
51  const DtString& objectQueueName, const DtString& interactionQueueName,
52  const DtString& controlQueueName );
53 
59  DtQueueManager( DtU32 numberOfBucketsInQueue, DtU32 payloadSizePerBucket,
60  int port, DtU16 brokerId, const DtString& objectQueueName,
61  const DtString& interactionQueueName,
62  const DtString& controlQueueName );
63 
69  virtual ~DtQueueManager();
70 
71  virtual void send( DtPortalControlMessage& message, bool global = false );
72 
75  virtual void tick();
76 
80  virtual void requestBrokerShutdown();
81 
86  virtual void requestBrokerRestart( bool shouldMapMessagesOneToOne );
87 
90  virtual void brokerShutdownNotification( DtU32 brokerId );
91 
98  virtual int connectedBrokerCount();
99 
103  virtual void pruneBrokerSocketMap();
104 
108 
109  virtual DtSubscribableMessageQueue* getControlMessageQueue() { return myControlMessageQueue;}
110  virtual DtSubscribableMessageQueue* getInteractionMessageQueue() { return myInteractionMessageQueue;}
111  virtual DtSubscribableMessageQueue* getObjectMessageQueue() { return myObjectMessageQueue;}
112 
114  void processBrokerConnect(const DtBrokerStartedMessage& msg);
115 
116  protected:
117 
119  virtual void addSocket( DtInetTcpSocket* sock );
120 
122  virtual void removeSocket( DtInetTcpSocket* sock );
123 
125  virtual void removeUnknownSocket( DtInetTcpSocket* sock );
126 
129  virtual void processUnknownSockets();
130 
133  virtual void testKnownSockets();
134 
135  static void getLicFilesInDir( const std::string& dir, std::list<std::string>& files );
136 
137  static void searchForLicFile();
138 
141  void drainSockets();
142 
143  static bool addSocketCb( DtInetSocket* sock, void* usr );
144  static bool removeSocketCb( DtInetSocket* sock, void* usr );
145 
146  virtual DtU8 getUnusedBrokerID();
147 
148  private:
149 
151  DtQueueManager( const DtQueueManager& other );
152 
154  DtQueueManager& operator = ( const DtQueueManager& other );
155 
156  protected:
157 
158  const DtU16 myBrokerId;
159 
163 
166 
170 
171  DtInetSocketMgr* myTcpSocketManager;
172 
173  DtClock myClock;
175 
176  typedef std::set<DtU32> BrokerShutdownNotificationSet;
178 
179  typedef std::map<int,DtInetTcpSocket*> BrokerSocketMap;
181 
182  typedef std::map<DtInetTcpSocket*,int> UnknownSocketMap;
184 
185  typedef std::map<int, int> BrokerIdTypeMap;
187 
188  };
189 
190 }
DtSubscribableMessageQueue * myControlMessageQueue
Definition: queueManager.h:167
Contains the DtPortalControlMessage class declarations.
std::map< int, int > BrokerIdTypeMap
Definition: queueManager.h:185
#define DT_DLL_LIBPORTAL
Definition: include/portal/dllExport.h:20
UnknownSocketMap myUnknownBrokerSocketList
Definition: queueManager.h:183
DtU32 myControlSerialNumber
Definition: queueManager.h:160
BrokerIdTypeMap myBrokerIdTypeMap
Definition: queueManager.h:186
virtual DtSubscribableMessageQueue * getObjectMessageQueue()
Definition: queueManager.h:111
Implements a message queue for multiple subscribers.
Definition: smSubscribableMessageQueue.h:34
BrokerSocketMap myBrokerSocketMap
Definition: queueManager.h:180
DtSubscribableMessageQueue * myObjectMessageQueue
Definition: queueManager.h:169
The base class for all messages passed through the portal.
Definition: pMessage.h:65
DtInetSocketMgr * myTcpSocketManager
Definition: queueManager.h:171
const DtU16 myBrokerId
Definition: queueManager.h:158
int myTicksBeforeSocketTest
Definition: queueManager.h:162
DtSubscribableMessageQueue * myInteractionMessageQueue
Definition: queueManager.h:168
BrokerShutdownNotificationSet myBrokerShutdownNotifications
Definition: queueManager.h:177
PortalControlMessageTemplate is used to create new DtPortalControlMessage types.
Definition: pControlMessage.h:71
std::set< DtU32 > BrokerShutdownNotificationSet
Definition: queueManager.h:176
std::map< int, DtInetTcpSocket * > BrokerSocketMap
Definition: queueManager.h:179
Contains the DtPortalMessageFactory class declaration.
This factory creates DtPortalMessage instances from a byte array.
Definition: pMessageFactory.h:22
int myTickCountForSocketTest
Definition: queueManager.h:161
Responsible for the creation and managment of all shared memory pools.
Definition: memoryManager.h:23
DtClock myClock
Definition: queueManager.h:173
DtTime myLastHeartbeatTime
Definition: queueManager.h:174
std::map< DtInetTcpSocket *, int > UnknownSocketMap
Definition: queueManager.h:182
virtual DtSubscribableMessageQueue * getControlMessageQueue()
Definition: queueManager.h:109
virtual DtSubscribableMessageQueue * getInteractionMessageQueue()
Definition: queueManager.h:110
A DtQueueManager is responsible for creating and deleting all Shared memory Queues used by the portal...
Definition: queueManager.h:40
Control messages signal state changes in VR-Exchange&#39;s operation.
Definition: pControlMessage.h:22
DtPortalMessageFactory myMessageFactory
Definition: queueManager.h:164
DtMemoryManager myMemoryManager
Definition: queueManager.h:165

Document ID: Generated on Mon Apr 19 15:55:22 EDT 2021 from SVN revision 227909
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)