WebLVC 1.7d API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
pReflectedObjectManager.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2016 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
13 #include <portal/pControlMessage.h>
14 #include <portal/pGenericObject.h>
15 #include <portal/pConnection.h>
16 #include <portal/pAggregate.h>
17 #include <portal/pEntity.h>
18 
19 #include <vlutil/vlNetTypes.h>
20 #include <vlutil/vlString.h>
21 
22 #include <matrix/vlVector.h>
23 
24 #include <list>
25 #include <map>
26 
27 namespace MAKVrExchange
28 {
29 
30  class DtPortalConnection;
31 
37  template <class T_ReflectedObject>
39  {
40  public:
41 
44  typedef std::map<DtString,T_ReflectedObject*> ReflectedObjectMap;
45 
47  typedef void (*DtPortalObjectCallback)( const T_ReflectedObject& obj, void* usr );
48 
50  typedef bool (*DtDiscoveryCondition)( const DtPortalReflectedObject* refObj, void* usr );
51 
52  public:
53 
69 
70  DtPortalReflectedObjectManager( DtPortalConnection* conn, const bool ignoreFiltering = false );
71  DtPortalReflectedObjectManager( DtPortalConnection* conn, DtPortalMessageKind messageType, const bool ignoreFiltering = false );
72 
74 
77 
80 
82  virtual void addAdditionCallback( DtPortalObjectCallback cb, void* userData );
83 
85  virtual void removeAdditionCallback( DtPortalObjectCallback cb, void* userData );
86 
88  virtual void addRemovalCallback( DtPortalObjectCallback cb, void* userData );
89 
91  virtual void removeRemovalCallback( DtPortalObjectCallback cb, void* userData );
92 
94 
97  virtual void setDiscoveryCondition( DtDiscoveryCondition fn, void* usr );
98 
102  virtual const ReflectedObjectMap& reflectedObjectMap() const;
103 
104  virtual bool isFilteringIgnored() const;
105 
106  protected:
107 
110  virtual bool discoverObject( T_ReflectedObject* pObj );
111 
113  virtual void processNewObject( const typename T_ReflectedObject::TheTypeOfThisObject& obj );
114 
116  virtual void processUpdate( const typename T_ReflectedObject::TheTypeOfThisObject& obj );
117 
118  virtual void processRemoval( const DtPortalObject& obj );
119 
121  virtual bool readyToAdd( const DtPortalReflectedObject* refObj );
122 
124  virtual void removeObjectsForBroker( const DtU32& brokerId );
125 
128  static void objectUpdateCb( const typename T_ReflectedObject::TheTypeOfThisObject& obj, void* usr );
129 
132  static void abnormalRemovalCb( const DtAbnormalBrokerExitMessage& msg, void* usrData );
133 
135  static void removeBrokerCb( const DtBrokerExitingMessage& msg, void* usrData );
136 
137  private:
138 
141 
144 
145  protected:
146 
148  {
150  void* userData;
151  };
152 
153  typedef std::list<CallbackPair> CallbackPairList;
154  typedef std::map<DtString,CallbackPairList> ObjectUpdateCallbackMap;
155 
158 
162 
165 
166  const bool myFilteringIgnored;
168 
169  };
170 
171 }
172 
173 #define _pReflectedObjectManager_INL_
174 #include "pReflectedObjectManager.inl"
175 #undef _pReflectedObjectManager_INL_
virtual const ReflectedObjectMap & reflectedObjectMap() const
Returns a const reference to the reflectedObjectMap used to manage the list of reflected objects...
Manages collections of ReflectedObjects of Type T_ReflectedObject.
Definition: pReflectedObjectManager.h:38
virtual void processNewObject(const typename T_ReflectedObject::TheTypeOfThisObject &obj)
Processes a new object/undiscovered object.
Contains the DtPortalControlMessage class declarations.
static void objectUpdateCb(const typename T_ReflectedObject::TheTypeOfThisObject &obj, void *usr)
Called anytime an object is updated.
virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void *usr)
Set the checker function which will determine when an object gets discovered and put into the reflect...
DtDiscoveryCondition myDiscoveryCondition
Definition: pReflectedObjectManager.h:163
void * myDiscoveryConditionParameter
Definition: pReflectedObjectManager.h:164
bool(* DtDiscoveryCondition)(const DtPortalReflectedObject *refObj, void *usr)
Function to use when registering a Discovery Condition.
Definition: pReflectedObjectManager.h:50
virtual ~DtPortalReflectedObjectManager()
Default Destructor.
DtPortalReflectedObjectManager & operator=(const DtPortalReflectedObjectManager &other)
Assignment operator not implemented - do not copy.
DtPortalObject are messages which also serve as state repositories for simulated objects.
Definition: pObject.h:23
Contains the DtPortalReflectedObject and DtPortalReflectedObjectTemplate class declarations.
An abstract interface for reflected objects.
Definition: pReflectedObject.h:31
PortalControlMessageTemplate is used to create new DtPortalControlMessage types.
Definition: pControlMessage.h:71
virtual void addRemovalCallback(DtPortalObjectCallback cb, void *userData)
Adds a callback to be called when a reflected object is deleted.
virtual void addAdditionCallback(DtPortalObjectCallback cb, void *userData)
Adds a callback to be called when a reflected object is discovered.
Contains the DtPortalGenericObject class declaration.
ReflectedObjectMap myReflectedObjectMap
Definition: pReflectedObjectManager.h:159
DtPortalReflectedObjectManager(DtPortalConnection *conn, const bool ignoreFiltering=false)
Constructors.
virtual void removeRemovalCallback(DtPortalObjectCallback cb, void *userData)
Removes an already registered removal callback.
CallbackPairList myObjectAdditionCallbacks
Definition: pReflectedObjectManager.h:156
Contains the DtPortalAggregate class declaration.
void * userData
Definition: pReflectedObjectManager.h:150
DtPortalMessageKind myKind
Definition: pReflectedObjectManager.h:167
std::map< DtString, T_ReflectedObject * > ReflectedObjectMap
A map of T_ReflectedObject indexed by the object name.
Definition: pReflectedObjectManager.h:44
Contains the DtPortalEntity class declaration.
DtPortalConnection * myConn
Definition: pReflectedObjectManager.h:161
virtual bool readyToAdd(const DtPortalReflectedObject *refObj)
Tests if the reflected object can come off the wait list.
Definition: pReflectedObjectManager.h:147
virtual bool discoverObject(T_ReflectedObject *pObj)
Fully discovers the object and notifies the interested parties.
virtual void removeObjectsForBroker(const DtU32 &brokerId)
Removes all objects associated with this broker Id.
Connects a broker to the Portal Data Exchange.
Definition: pConnection.h:49
std::map< DtString, CallbackPairList > ObjectUpdateCallbackMap
Definition: pReflectedObjectManager.h:154
CallbackPairList myObjectRemovalCallbacks
Definition: pReflectedObjectManager.h:157
DtPortalObjectCallback fcn
Definition: pReflectedObjectManager.h:149
Contains the DtPortalConnection class declaration.
DtPortalMessageKind
A List of message kinds distributed with the Portal.
Definition: pMessageKinds.h:23
const bool myFilteringIgnored
Definition: pReflectedObjectManager.h:166
virtual void removeAdditionCallback(DtPortalObjectCallback cb, void *userData)
Removes an already registered discovered callback.
virtual void processUpdate(const typename T_ReflectedObject::TheTypeOfThisObject &obj)
Receives a message from the connection manager for this type of object.
void(* DtPortalObjectCallback)(const T_ReflectedObject &obj, void *usr)
Function to use when registering an Addition, Update or removal callback.
Definition: pReflectedObjectManager.h:47
virtual void processRemoval(const DtPortalObject &obj)
static void abnormalRemovalCb(const DtAbnormalBrokerExitMessage &msg, void *usrData)
Callback for the abnormalRemovalCb which is sent by the portal when a broker exits unexpectedly...
std::list< CallbackPair > CallbackPairList
Definition: pReflectedObjectManager.h:153
static void removeBrokerCb(const DtBrokerExitingMessage &msg, void *usrData)
Called when a broker exits, this causes all objects owned by that broker to be removed.
ReflectedObjectMap myWaitListObjectMap
Definition: pReflectedObjectManager.h:160

Document ID: Generated on Wed Jun 21 15:05:44 EDT 2023 from SVN revision 256253
Copyright © 2005-2023 MAK Technologies. All Rights Reserved (www.mak.com)