8 , d_destination(destination)
23 vrpn_CONNECTIONFORWARDERRECORD *dlp;
30 d_list->sourceServiceId);
45 const char *sourceServiceId,
46 const char *destinationName,
47 const char *destinationServiceId,
48 vrpn_uint32 classOfService)
51 vrpn_CONNECTIONFORWARDERRECORD *newList =
52 new vrpn_CONNECTIONFORWARDERRECORD(
53 d_source, d_destination, sourceName, sourceServiceId,
54 destinationName, destinationServiceId, classOfService);
56 if (!newList)
return -1;
58 newList->next = d_list;
63 newList->sourceServiceId);
69 const char *sourceServiceId,
70 const char *destinationName,
71 const char *destinationServiceId,
72 vrpn_uint32 classOfService)
75 vrpn_CONNECTIONFORWARDERRECORD **snitch;
76 vrpn_CONNECTIONFORWARDERRECORD *victim;
78 vrpn_int32 st, ss, dt, ds;
85 for (snitch = &d_list, victim = *snitch; victim;
86 snitch = &(victim->next), victim = *snitch) {
88 if ((victim->sourceId == st) && (victim->sourceServiceId == ss) &&
89 (victim->destinationId == dt) &&
90 (victim->destinationServiceId == ds) &&
91 (victim->classOfService == classOfService)) {
92 (*snitch)->next = victim->next;
102 int vrpn_ConnectionForwarder::handle_message(
void *userdata,
108 vrpn_int32
id = p.
type;
109 vrpn_int32 serviceId = p.
sender;
110 vrpn_uint32 serviceClass;
118 retval = me->map(&
id, &serviceId, &serviceClass);
119 if (retval)
return -1;
121 if (me->d_destination) {
123 serviceId, p.
buffer, serviceClass);
132 vrpn_int32 vrpn_ConnectionForwarder::map(vrpn_int32 *
id, vrpn_int32 *serviceId,
133 vrpn_uint32 *classOfService)
136 vrpn_CONNECTIONFORWARDERRECORD *dlp;
138 for (dlp = d_list; dlp; dlp = dlp->next)
139 if ((*
id == dlp->sourceId) && (*serviceId == dlp->sourceServiceId)) {
140 *
id = dlp->destinationId;
141 *serviceId = dlp->destinationServiceId;
142 *classOfService = dlp->classOfService;
152 vrpn_ConnectionForwarder::vrpn_CONNECTIONFORWARDERRECORD::
155 const char *iSourceServiceId,
157 const char *iDestServiceId, vrpn_uint32 cos)
158 : sourceId(source->register_message_type(iSourceId))
159 , sourceServiceId(source->register_sender(iSourceServiceId))
160 , destinationId(dest->register_message_type(iDestId))
161 , destinationServiceId(dest->register_sender(iDestServiceId))
162 , classOfService(cos)
168 const char *sourceServiceName,
170 const char *destinationServiceName)
172 , d_sourceService(source->register_sender(sourceServiceName))
173 , d_destination(destination)
174 , d_destinationService(destination->register_sender(destinationServiceName))
189 vrpn_STREAMFORWARDERRECORD *dlp;
211 const char *destinationName,
212 vrpn_uint32 classOfService)
215 vrpn_STREAMFORWARDERRECORD *newList =
new vrpn_STREAMFORWARDERRECORD(
216 d_source, d_destination, sourceName, destinationName, classOfService);
218 if (!newList)
return -1;
220 newList->next = d_list;
231 const char *destinationName,
232 vrpn_uint32 classOfService)
235 vrpn_STREAMFORWARDERRECORD **snitch;
236 vrpn_STREAMFORWARDERRECORD *victim;
243 for (snitch = &d_list, victim = *snitch; victim;
244 snitch = &(victim->next), victim = *snitch) {
246 if ((victim->sourceId == st) && (victim->destinationId == dt) &&
247 (victim->classOfService == classOfService)) {
248 (*snitch)->next = victim->next;
263 vrpn_int32
id = p.
type;
264 vrpn_uint32 serviceClass;
272 retval = me->map(&
id, &serviceClass);
273 if (retval)
return -1;
275 if (me->d_destination) {
277 me->d_destinationService, p.
buffer,
287 vrpn_int32 vrpn_StreamForwarder::map(vrpn_int32 *
id,
288 vrpn_uint32 *classOfService)
291 vrpn_STREAMFORWARDERRECORD *dlp;
293 for (dlp = d_list; dlp; dlp = dlp->next)
294 if (*
id == dlp->sourceId) {
295 *
id = dlp->destinationId;
296 *classOfService = dlp->classOfService;
306 vrpn_StreamForwarder::vrpn_STREAMFORWARDERRECORD::vrpn_STREAMFORWARDERRECORD(
308 const char *iDestId, vrpn_uint32 cos)
309 : sourceId(source->register_message_type(iSourceId))
310 , destinationId(dest->register_message_type(iDestId))
311 , classOfService(cos)