VR-Exchange 2.1 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 
121  virtual void discoverObject(T_ReflectedObject *pObj);
122 
124  virtual void processNewObject(
125  const typename T_ReflectedObject::TheTypeOfThisObject &obj);
126 
128  virtual void processUpdate(
129  const typename T_ReflectedObject::TheTypeOfThisObject &obj);
130 
131  virtual void processRemoval( const DtPortalObject &obj);
132 
134  virtual bool readyToAdd(const DtPortalReflectedObject *refObj);
135 
137  virtual void removeObjectsForBroker(const DtU32& brokerId);
138 
139 protected:
140 
143  static void objectUpdateCb(
144  const typename T_ReflectedObject::TheTypeOfThisObject &obj, void *user);
145 
149  static void abnormalRemovalCb(
150  const DtAbnormalBrokerExitMessage &msg, void *usrData);
151 
154  static void removeBrokerCb(
155  const DtBrokerExitingMessage &msg, void *usrData);
156 
157 protected:
158 
160  {
162  void *userData;
163  };
164 
165  typedef std::list<CallbackPair> CallbackPairList;
166  typedef std::map<DtString, CallbackPairList> OjbectUpdateCallbackMap;
167 
170 
174 
177 
178  const bool myFilteringIgnored;
180 
181 };
182 }
183 
184 #define pReflectedObjectManager_INL_
185 #include "pReflectedObjectManager.inl"
186 #undef pReflectedObjectManager_INL_
187 
188 #endif //end pReflectedObjectManager_H_

Document ID: Generated on Tue Aug 7 22:07:13 EDT 2012 from SVN revision 117874
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)