VR-Exchange 2.1 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
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
159
struct
CallbackPair
160
{
161
DtPortalObjectCallback
fcn
;
162
void
*
userData
;
163
};
164
165
typedef
std::list<CallbackPair>
CallbackPairList
;
166
typedef
std::map<DtString, CallbackPairList>
OjbectUpdateCallbackMap
;
167
168
CallbackPairList
myObjectAdditionCallbacks
;
169
CallbackPairList
myObjectRemovalCallbacks
;
170
171
ReflectedObjectMap
myReflectedObjectMap
;
172
ReflectedObjectMap
myWaitListObjectMap
;
173
DtPortalConnection
*
myConn
;
174
175
DtDiscoveryCondition
myDiscoveryCondition
;
176
void
*
myDiscoveryConditionParameter
;
177
178
const
bool
myFilteringIgnored
;
179
DtPortalMessageKind
myKind
;
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
)