VR-Exchange 2.6 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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_

Document ID: Generated on Wed Jan 30 18:15:18 EST 2019 from SVN revision 195534
Copyright © 2005-2019 VT MÄK. All Rights Reserved (www.mak.com)