vrpn
07.35
Virtual Reality Peripheral Network
Toggle main menu visibility
Loading...
Searching...
No Matches
vrpn_Forwarder.h
Go to the documentation of this file.
1
#ifndef VRPN_FORWARDER_H
2
#define VRPN_FORWARDER_H
3
4
#include "
vrpn_Configure.h
"
// for VRPN_API, VRPN_CALLBACK
5
#include "
vrpn_Connection.h
"
// for vrpn_Connection (ptr only), etc
6
#include "
vrpn_Types.h
"
// for vrpn_int32, vrpn_uint32
7
8
// vrpn_Forwarder
9
// Tom Hudson, August 1998
10
//
11
// Class to take messages from one VRPN connection and send them out
12
// on another.
13
14
// Design decisions:
15
// Scale of forwarding:
16
// Could write a forwarder per stream (serviceName per instantiation)
17
// or per connection (serviceName per forward() call). Latter is
18
// more flexible, but takes up more memory if few distinct streams need
19
// to be forwarded, has a clunkier syntax, ...
20
// Flexibility of naming:
21
// We allow users to take in a message of one name and send it out
22
// with another name; this is useful and dangerous.
23
24
// Faults:
25
// There is currently no way to specify vrpn_SENDER_ANY as a source.
26
// If we do, it isn't clear what sender to specify to the destination.
27
28
class
VRPN_API
vrpn_ConnectionForwarder
{
29
30
public
:
31
// Set up to forward messages from <source> to <destination>
32
vrpn_ConnectionForwarder
(
vrpn_Connection
*source,
33
vrpn_Connection
*destination);
34
35
~vrpn_ConnectionForwarder
(
void
);
36
37
// Begins forwarding of a message type.
38
// Forwards messages of type <sourceName> and sender <sourceServiceName>,
39
// sending them out as type <destinationName> from sender
40
// <destinationServiceName>.
41
// Return nonzero on failure.
42
int
forward
(
const
char
*sourceName,
const
char
*sourceServiceName,
43
const
char
*destinationName,
const
char
*destinationServiceName,
44
vrpn_uint32 classOfService =
vrpn_CONNECTION_RELIABLE
);
45
46
// Stops forwarding of a message type.
47
// Return nonzero on failure.
48
int
unforward
(
const
char
*sourceName,
const
char
*sourceServiceName,
49
const
char
*destinationName,
50
const
char
*destinationServiceName,
51
vrpn_uint32 classOfService =
vrpn_CONNECTION_RELIABLE
);
52
53
private
:
54
static
int
VRPN_CALLBACK
handle_message(
void
*,
vrpn_HANDLERPARAM
);
55
56
// Translates (id, serviceId) from source to destination
57
// and looks up intended class of service.
58
// Returns nonzero if lookup fails.
59
vrpn_int32 map(vrpn_int32 *
id
, vrpn_int32 *serviceId,
60
vrpn_uint32 *serviceClass);
61
62
vrpn_Connection
*d_source;
63
vrpn_Connection
*d_destination;
64
65
struct
vrpn_CONNECTIONFORWARDERRECORD {
66
67
vrpn_CONNECTIONFORWARDERRECORD(
vrpn_Connection
*,
vrpn_Connection
*,
68
const
char
*,
const
char
*,
const
char
*,
69
const
char
*, vrpn_uint32);
70
71
vrpn_int32 sourceId;
// source's type id
72
vrpn_int32 sourceServiceId;
// source's sender id
73
vrpn_int32 destinationId;
// destination's type id
74
vrpn_int32 destinationServiceId;
// destination's sender id
75
vrpn_uint32 classOfService;
// class of service to send
76
77
vrpn_CONNECTIONFORWARDERRECORD *next;
78
};
79
80
vrpn_CONNECTIONFORWARDERRECORD *d_list;
81
};
82
83
class
VRPN_API
vrpn_StreamForwarder
{
84
85
public
:
86
// Set up to forward messages from sender <sourceServiceName> on <source>
87
// to <destination>, as if from sender <destinationServiceName>
88
vrpn_StreamForwarder
(
vrpn_Connection
*source,
const
char
*sourceServiceName,
89
vrpn_Connection
*destination,
90
const
char
*destinationServiceName);
91
92
~vrpn_StreamForwarder
(
void
);
93
94
// Begins forwarding of a message type.
95
// Return nonzero on failure.
96
int
forward
(
const
char
*sourceName,
const
char
*destinationName,
97
vrpn_uint32 classOfService =
vrpn_CONNECTION_RELIABLE
);
98
99
// Stops forwarding of a message type.
100
// Return nonzero on failure.
101
int
unforward
(
const
char
*sourceName,
const
char
*destinationName,
102
vrpn_uint32 classOfService =
vrpn_CONNECTION_RELIABLE
);
103
104
private
:
105
static
int
VRPN_CALLBACK
handle_message(
void
*,
vrpn_HANDLERPARAM
);
106
107
// Translates (id, serviceId) from source to destination
108
// and looks up intended class of service.
109
// Returns nonzero if lookup fails.
110
vrpn_int32 map(vrpn_int32 *
id
, vrpn_uint32 *serviceClass);
111
112
vrpn_Connection
*d_source;
113
vrpn_int32 d_sourceService;
114
vrpn_Connection
*d_destination;
115
vrpn_int32 d_destinationService;
116
117
struct
vrpn_STREAMFORWARDERRECORD {
118
119
vrpn_STREAMFORWARDERRECORD(
vrpn_Connection
*,
vrpn_Connection
*,
120
const
char
*,
const
char
*, vrpn_uint32);
121
122
vrpn_int32 sourceId;
// source's type id
123
vrpn_int32 destinationId;
// destination's type id
124
vrpn_uint32 classOfService;
// class of service to send
125
126
vrpn_STREAMFORWARDERRECORD *next;
127
};
128
129
vrpn_STREAMFORWARDERRECORD *d_list;
130
};
131
132
#endif
// VRPN_FORWARDER_H
vrpn_ConnectionForwarder::vrpn_ConnectionForwarder
vrpn_ConnectionForwarder(vrpn_Connection *source, vrpn_Connection *destination)
Definition
vrpn_Forwarder.C:5
vrpn_ConnectionForwarder::unforward
int unforward(const char *sourceName, const char *sourceServiceName, const char *destinationName, const char *destinationServiceName, vrpn_uint32 classOfService=vrpn_CONNECTION_RELIABLE)
Definition
vrpn_Forwarder.C:70
vrpn_ConnectionForwarder::forward
int forward(const char *sourceName, const char *sourceServiceName, const char *destinationName, const char *destinationServiceName, vrpn_uint32 classOfService=vrpn_CONNECTION_RELIABLE)
Definition
vrpn_Forwarder.C:47
vrpn_Connection
Generic connection class not specific to the transport mechanism.
Definition
vrpn_Connection.h:561
vrpn_StreamForwarder::forward
int forward(const char *sourceName, const char *destinationName, vrpn_uint32 classOfService=vrpn_CONNECTION_RELIABLE)
Definition
vrpn_Forwarder.C:222
vrpn_StreamForwarder::unforward
int unforward(const char *sourceName, const char *destinationName, vrpn_uint32 classOfService=vrpn_CONNECTION_RELIABLE)
Definition
vrpn_Forwarder.C:241
vrpn_StreamForwarder::vrpn_StreamForwarder
vrpn_StreamForwarder(vrpn_Connection *source, const char *sourceServiceName, vrpn_Connection *destination, const char *destinationServiceName)
Definition
vrpn_Forwarder.C:174
vrpn_HANDLERPARAM
This structure is what is passed to a vrpn_Connection message callback.
Definition
vrpn_Connection.h:41
vrpn_Configure.h
VRPN_API
#define VRPN_API
Definition
vrpn_Configure.h:648
VRPN_CALLBACK
#define VRPN_CALLBACK
Definition
vrpn_Configure.h:649
vrpn_Connection.h
vrpn_CONNECTION_RELIABLE
const vrpn_uint32 vrpn_CONNECTION_RELIABLE
Classes of service for messages, specify multiple by ORing them together Priority of satisfying these...
Definition
vrpn_Connection.h:118
vrpn_ConnectionForwarder
class VRPN_API vrpn_ConnectionForwarder
Definition
vrpn_ForwarderController.h:34
vrpn_Types.h
vrpn_Forwarder.h
Generated by
1.17.0