VR-Exchange 2.2 API Documentation
Home
Modules
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
include
portal
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>
17
#include <
portal/pReflectedObject.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>
37
class
DtPortalReflectedObjectManager
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
74
virtual
~DtPortalReflectedObjectManager
();
75
76
private
:
77
79
DtPortalReflectedObjectManager
(
const
DtPortalReflectedObjectManager
&other);
80
82
DtPortalReflectedObjectManager
&
operator=
(
const
DtPortalReflectedObjectManager
&other);
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
160
struct
CallbackPair
161
{
162
DtPortalObjectCallback
fcn
;
163
void
*
userData
;
164
};
165
166
typedef
std::list<CallbackPair>
CallbackPairList
;
167
typedef
std::map<DtString, CallbackPairList>
OjbectUpdateCallbackMap
;
168
169
CallbackPairList
myObjectAdditionCallbacks
;
170
CallbackPairList
myObjectRemovalCallbacks
;
171
172
ReflectedObjectMap
myReflectedObjectMap
;
173
ReflectedObjectMap
myWaitListObjectMap
;
174
DtPortalConnection
*
myConn
;
175
176
DtDiscoveryCondition
myDiscoveryCondition
;
177
void
*
myDiscoveryConditionParameter
;
178
179
const
bool
myFilteringIgnored
;
180
DtPortalMessageKind
myKind
;
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
)