VR-Exchange 2.2 API Documentation
pReflectedObjectManager.h
Go to the documentation of this file.
1 /*********************************************************************
2  ** Copyright (c) 1992-2010 VT MAK
3  ** All rights reserved.
4  *********************************************************************/
5 
6 #ifndef pReflectedObjectManager_H_
7 #define pReflectedObjectManager_H_
8 
12 
13 
14 #include <vlutil/vlString.h>
15 #include <vlutil/vlNetTypes.h>
16 #include <matrix/vlVector.h>
18 #include <portal/pConnection.h>
19 #include <portal/pEntity.h>
20 #include <portal/pGenericObject.h>
21 #include <portal/pControlMessage.h>
22 #include <portal/pAggregate.h>
23 
24 #include <list>
25 #include <map>
26 
27 namespace MAKVrExchange {
28 
29 class DtPortalConnection;
30 
36 template <class T_ReflectedObject>
38 {
39 public:
40 
43  typedef std::map<DtString, T_ReflectedObject *> ReflectedObjectMap;
44 
47  typedef void (*DtPortalObjectCallback)
48  (const T_ReflectedObject &obj, void *usr);
49 
51  typedef bool (*DtDiscoveryCondition)
52  (const DtPortalReflectedObject *refObj, void *usr);
53 
54 public:
55 
70  DtPortalReflectedObjectManager( DtPortalConnection *conn, const bool ignoreFiltering = false );
71  DtPortalReflectedObjectManager( DtPortalConnection *conn, DtPortalMessageKind messageType, const bool ignoreFiltering = false );
72 
75 
76 private:
77 
80 
83 
84 public:
85 
87 
88 
90  virtual void addAdditionCallback(
91  DtPortalObjectCallback cb, void* userData);
92 
94  virtual void removeAdditionCallback(
95  DtPortalObjectCallback cb, void* userData);
96 
98  virtual void addRemovalCallback(
99  DtPortalObjectCallback cb, void* userData);
100 
102  virtual void removeRemovalCallback(
103  DtPortalObjectCallback cb, void* userData);
104 
106 
109  virtual void setDiscoveryCondition(DtDiscoveryCondition fn, void* usr);
110 
114  virtual const ReflectedObjectMap& reflectedObjectMap() const;
115 
116  virtual bool isFilteringIgnored() const;
117 
118 protected:
119 
122  virtual bool discoverObject(T_ReflectedObject *pObj);
123 
125  virtual void processNewObject(
126  const typename T_ReflectedObject::TheTypeOfThisObject &obj);
127 
129  virtual void processUpdate(
130  const typename T_ReflectedObject::TheTypeOfThisObject &obj);
131 
132  virtual void processRemoval( const DtPortalObject &obj);
133 
135  virtual bool readyToAdd(const DtPortalReflectedObject *refObj);
136 
138  virtual void removeObjectsForBroker(const DtU32& brokerId);
139 
140 protected:
141 
144  static void objectUpdateCb(
145  const typename T_ReflectedObject::TheTypeOfThisObject &obj, void *user);
146 
150  static void abnormalRemovalCb(
151  const DtAbnormalBrokerExitMessage &msg, void *usrData);
152 
155  static void removeBrokerCb(
156  const DtBrokerExitingMessage &msg, void *usrData);
157 
158 protected:
159 
161  {
163  void *userData;
164  };
165 
166  typedef std::list<CallbackPair> CallbackPairList;
167  typedef std::map<DtString, CallbackPairList> OjbectUpdateCallbackMap;
168 
171 
175 
178 
179  const bool myFilteringIgnored;
181 
182 };
183 }
184 
185 #define pReflectedObjectManager_INL_
186 #include "pReflectedObjectManager.inl"
187 #undef pReflectedObjectManager_INL_
188 
189 #endif //end pReflectedObjectManager_H_

Document ID: Generated on Mon Apr 15 17:15:50 EDT 2013 from SVN revision 126154
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)