1#ifndef VRPN_SHARED_OBJECT
2#define VRPN_SHARED_OBJECT
6#include "vrpn_Configure.h"
9#include "vrpn_Shared.h"
10#include "vrpn_Types.h"
33typedef int(VRPN_CALLBACK *vrpnDeferredUpdateCallback)(
void *userdata);
35typedef int(VRPN_CALLBACK *vrpnSharedIntCallback)(
void *userdata,
38typedef int(VRPN_CALLBACK *vrpnSharedFloatCallback)(
void *userdata,
39 vrpn_float64 newValue,
41typedef int(VRPN_CALLBACK *vrpnSharedStringCallback)(
void *userdata,
45typedef int(VRPN_CALLBACK *vrpnTimedSharedIntCallback)(
void *userdata,
49typedef int(VRPN_CALLBACK *vrpnTimedSharedFloatCallback)(
void *userdata,
50 vrpn_float64 newValue,
53typedef int(VRPN_CALLBACK *vrpnTimedSharedStringCallback)(
void *userdata,
62typedef int(VRPN_CALLBACK *vrpnSharedIntSerializerPolicy)(
63 void *userdata, vrpn_int32 newValue, timeval when,
65typedef int(VRPN_CALLBACK *vrpnSharedFloatSerializerPolicy)(
66 void *userdata, vrpn_float64 newValue, timeval when,
68typedef int(VRPN_CALLBACK *vrpnSharedStringSerializerPolicy)(
69 void *userdata,
const char *newValue, timeval when,
75#define VRPN_SO_DEFAULT 0x00
76#define VRPN_SO_IGNORE_IDEMPOTENT 0x01
77#define VRPN_SO_DEFER_UPDATES 0x10
78#define VRPN_SO_IGNORE_OLD 0x100
109enum vrpn_SerializerPolicy {
131 const char *name(
void)
const;
132 vrpn_bool isSerializer(
void)
const;
168 timeval d_lastUpdate;
175 vrpn_int32 d_serverId;
176 vrpn_int32 d_remoteId;
179 vrpn_int32 d_update_type;
191 vrpn_int32 d_lamportUpdate_type;
199 virtual vrpn_bool shouldSendUpdate(vrpn_bool isLocalSet,
200 vrpn_bool acceptedUpdate);
205 static int VRPN_CALLBACK
219 vrpnDeferredUpdateCallback handler;
228 void serverPostBindCleanup(
void);
229 void remotePostBindCleanup(
void);
244 void postBindCleanup(
void);
251 vrpn_int32 mode = VRPN_SO_DEFAULT);
256 vrpn_int32 value(
void)
const;
257 operator vrpn_int32()
const;
267 vrpn_bool register_handler(vrpnSharedIntCallback,
void *);
268 void unregister_handler(vrpnSharedIntCallback,
void *);
269 vrpn_bool register_handler(vrpnTimedSharedIntCallback,
void *);
270 void unregister_handler(vrpnTimedSharedIntCallback,
void *);
275 void setSerializerPolicy(vrpn_SerializerPolicy policy = vrpn_ACCEPT,
276 vrpnSharedIntSerializerPolicy f = NULL,
277 void *userdata = NULL);
288 vrpnSharedIntCallback handler;
294 vrpnTimedSharedIntCallback handler;
303 virtual vrpn_bool shouldAcceptUpdate(vrpn_int32 newValue, timeval when,
304 vrpn_bool isLocalSet,
308 void sendUpdate(vrpn_int32 newValue, timeval when);
310 void encode(
char **buffer, vrpn_int32 *len, vrpn_int32 newValue,
312 void encodeLamport(
char **buffer, vrpn_int32 *len, vrpn_int32 newValue,
319 void decode(
const char **buffer, vrpn_int32 *len, vrpn_int32 *newValue,
320 timeval *when)
const;
321 void decodeLamport(
const char **buffer, vrpn_int32 *len,
322 vrpn_int32 *newValue, timeval *when,
325 int yankCallbacks(vrpn_bool isLocal);
329 vrpn_SerializerPolicy d_policy;
330 vrpnSharedIntSerializerPolicy d_policyCallback;
331 void *d_policyUserdata;
346 vrpn_int32 defaultMode = VRPN_SO_DEFAULT);
360 vrpn_int32 defaultMode = VRPN_SO_DEFAULT);
372 vrpn_int32 mode = VRPN_SO_DEFAULT);
377 vrpn_float64 value(
void)
const;
378 operator vrpn_float64()
const;
388 void register_handler(vrpnSharedFloatCallback,
void *);
389 void unregister_handler(vrpnSharedFloatCallback,
void *);
390 void register_handler(vrpnTimedSharedFloatCallback,
void *);
391 void unregister_handler(vrpnTimedSharedFloatCallback,
void *);
396 void setSerializerPolicy(vrpn_SerializerPolicy policy = vrpn_ACCEPT,
397 vrpnSharedFloatSerializerPolicy f = NULL,
398 void *userdata = NULL);
401 vrpn_float64 d_value;
409 vrpnSharedFloatCallback handler;
415 vrpnTimedSharedFloatCallback handler;
421 vrpn_SerializerPolicy d_policy;
422 vrpnSharedFloatSerializerPolicy d_policyCallback;
423 void *d_policyUserdata;
427 virtual vrpn_bool shouldAcceptUpdate(vrpn_float64 newValue, timeval when,
428 vrpn_bool isLocalSet);
431 void sendUpdate(vrpn_float64 newValue, timeval when);
432 void encode(
char **buffer, vrpn_int32 *len, vrpn_float64 newValue,
434 void decode(
const char **buffer, vrpn_int32 *len, vrpn_float64 *newValue,
435 timeval *when)
const;
437 int yankCallbacks(vrpn_bool isLocal);
448 vrpn_int32 defaultMode = VRPN_SO_DEFAULT);
462 vrpn_int32 defaultMode = VRPN_SO_DEFAULT);
474 vrpn_int32 mode = VRPN_SO_DEFAULT);
479 const char *value(
void)
const;
480 operator const char *()
const;
490 vrpn_bool register_handler(vrpnSharedStringCallback,
void *);
491 void unregister_handler(vrpnSharedStringCallback,
void *);
492 vrpn_bool register_handler(vrpnTimedSharedStringCallback,
void *);
493 void unregister_handler(vrpnTimedSharedStringCallback,
void *);
498 void setSerializerPolicy(vrpn_SerializerPolicy policy = vrpn_ACCEPT,
499 vrpnSharedStringSerializerPolicy f = NULL,
500 void *userdata = NULL);
511 vrpnSharedStringCallback handler;
517 vrpnTimedSharedStringCallback handler;
523 vrpn_SerializerPolicy d_policy;
524 vrpnSharedStringSerializerPolicy d_policyCallback;
525 void *d_policyUserdata;
529 virtual vrpn_bool shouldAcceptUpdate(
const char *newValue, timeval when,
530 vrpn_bool isLocalSet);
533 void sendUpdate(
const char *newValue, timeval when);
534 void encode(
char **buffer, vrpn_int32 *len,
const char *newValue,
536 void decode(
const char **buffer, vrpn_int32 *len,
char *newValue,
537 timeval *when)
const;
539 int yankCallbacks(vrpn_bool isLocal);
550 vrpn_int32 defaultMode = VRPN_SO_DEFAULT);
564 vrpn_int32 defaultMode = VRPN_SO_DEFAULT);
Generic connection class not specific to the transport mechanism.
定义 vrpn_Connection.h:562
定义 vrpn_LamportClock.h:60
定义 vrpn_LamportClock.h:16
定义 vrpn_SharedObject.h:123
int yankDeferredUpdateCallbacks(void)
returns -1 on error (i.e. nonzero return by a callback)
vrpn_bool registerDeferredUpdateCallback(vrpnDeferredUpdateCallback, void *userdata)
vrpn_int32 d_assumeSerializer_type
定义 vrpn_SharedObject.h:185
static int VRPN_CALLBACK handle_update(void *, vrpn_HANDLERPARAM)
vrpn_int32 d_grantSerializer_type
Sent by the serializer to grant a request.
定义 vrpn_SharedObject.h:183
void becomeSerializer(void)
vrpn_int32 d_requestSerializer_type
Sent to the serializer to assume its duties.
定义 vrpn_SharedObject.h:181
vrpn_bool d_isSerializer
default to vrpn_TRUE for servers, FALSE for remotes
定义 vrpn_SharedObject.h:193
virtual void bindConnection(vrpn_Connection *)
int yankCallbacks(vrpn_bool isLocal)
must set d_lastUpdate BEFORE calling yankCallbacks()
void useLamportClock(vrpn_LamportClock *)
vrpn_bool d_isNegotiatingSerializer
定义 vrpn_SharedObject.h:195
static int VRPN_CALLBACK handle_gotConnection(void *, vrpn_HANDLERPARAM)
virtual void sendUpdate(void)=0
Should invoke default sendUpdate() for this derived type.
vrpn_bool d_queueSets
定义 vrpn_SharedObject.h:210
定义 vrpn_SharedObject.h:560
virtual void bindConnection(vrpn_Connection *)
定义 vrpn_SharedObject.h:546
virtual void bindConnection(vrpn_Connection *)
定义 vrpn_SharedObject.h:470
virtual void sendUpdate(void)
Should invoke default sendUpdate() for this derived type.
定义 vrpn_SharedObject.h:458
virtual void bindConnection(vrpn_Connection *)
定义 vrpn_SharedObject.h:444
virtual void bindConnection(vrpn_Connection *)
定义 vrpn_SharedObject.h:368
virtual void sendUpdate(void)
Should invoke default sendUpdate() for this derived type.
定义 vrpn_SharedObject.h:356
virtual void bindConnection(vrpn_Connection *)
定义 vrpn_SharedObject.h:342
virtual void bindConnection(vrpn_Connection *)
定义 vrpn_SharedObject.h:247
virtual void sendUpdate(void)
Should invoke default sendUpdate() for this derived type.
This structure is what is passed to a vrpn_Connection message callback.
定义 vrpn_Connection.h:41
定义 vrpn_SharedObject.h:218
定义 vrpn_SharedObject.h:510
定义 vrpn_SharedObject.h:516
定义 vrpn_SharedObject.h:408
定义 vrpn_SharedObject.h:414
定义 vrpn_SharedObject.h:287
定义 vrpn_SharedObject.h:293