blob: 732a0cfb6edf7e59b6cb681b599b32751f041203 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
//
// $Id$
//
#include "CosTimeBase.idl"
module RtecEventComm {
// = TITLE
// User defined Event Data.
//
// = DESCRIPTION
// The Event payload is defined by this type.
// Users wanting maximum flexibility can use an Any,
// users that only have one type of event may use structures,
// other users may preffer union, trying to strike a balance
// between performance and flexibility.
// Users willing to implement their own marshalling may use a
// sequence of octet.
#if 0
union EventData switch(long) {
case 1: double dval;
case 2: string sval;
case 3: sequence<octet> bval;
default: long lval;
};
#else
struct EventData {
long x;
long y;
};
#endif
typedef TimeBase::TimeT Time;
typedef long EventSourceID;
typedef long EventType;
struct Event
{
// = TITLE
// The Event structure.
//
// = DESCRIPTION
// Events are represented by this structure, it is simply a
// header,data pair.
//
EventType type_;
// The event type.
// This may be different from the discriminator in the EventData
// union above, the motivation is to allow filtering by data
// contents: different event types are assigned to different data
// contents though they use the same discriminator.
EventSourceID source_;
// Some way to identify the supplier.
long ttl_;
// The "Time To Live" count, each time an EC process the event it
// decreases the TTL field, when it gets to zero the message is no
// longer forwarded.
Time creation_time_;
Time ec_recv_time_;
Time ec_send_time_;
// Some timestamps, they actually belong in the payload, for some
// kind of measument event.
EventData data_;
// The event payload.
};
typedef sequence<Event> EventSet;
interface PushConsumer {
oneway void push (in EventSet data);
oneway void disconnect_push_consumer();
};
interface PushSupplier {
oneway void disconnect_push_supplier();
};
};
|