summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl')
-rw-r--r--TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl78
1 files changed, 78 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl b/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl
new file mode 100644
index 00000000000..ab51ef3a3bb
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/RtecDefaultEventData.idl
@@ -0,0 +1,78 @@
+/**
+ * @file RtecDefaultEventData.idl
+ *
+ * @brief Define the RtecBase module
+ *
+ * $Id$
+ *
+ * TAO's Real-time Event Service is described in:
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ */
+
+#ifndef TAO_RTEC_DEFAULTEVENTDATA_IDL
+#define TAO_RTEC_DEFAULTEVENTDATA_IDL
+
+#include <OctetSeq.pidl>
+
+#pragma prefix ""
+
+/// Define one of the common event payloads
+typedef CORBA::OctetSeq EventPayload;
+
+/**
+ * @brief User defined Event Data
+ *
+ *
+ * This structure defines the default payload in TAO's Real-time Event
+ * Service.
+ *
+ * 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 octets.
+ *
+ * The Event Service is completely transparent as to the contents of
+ * this structure.
+ */
+struct RtecEventData
+{
+#ifndef TAO_LACKS_EVENT_CHANNEL_OCTET_SEQUENCE
+ /// Add padding to align the octet sequence contents
+ /**
+ * This fields ensures that the contents of the octet sequence
+ * following are always aligned to an 8-byte boundary.
+ * Such alignment allows application developers to implement custom
+ * demarshaling from the octet sequence without requiring any data
+ * copies.
+ *
+ * This is how this works:
+ * - The last field in the header is an 8-byte unsigned long, hence
+ the header finishes on an 8 byte boundary.
+ * - The pad1 long has 4 bytes.
+ * - The length in the octet sequence adds another 4 bytes.
+ * - Thus the data in the octet sequence starts on an 8 bytes
+ * boundary too.
+ */
+ long pad1;
+
+ /// Octet sequence payload.
+ /**
+ * This is the payload used more often by high-performance
+ * applications.
+ */
+ EventPayload payload;
+#endif /* TAO_LACKS_EVENT_CHANNEL_OCTET_SEQUENCE */
+
+#ifndef TAO_LACKS_EVENT_CHANNEL_ANY
+ /// Use a CORBA any type as payload.
+ any any_value;
+#endif /* TAO_LACKS_EVENT_CHANNEL_ANY */
+};
+
+#pragma prefix ""
+
+#endif /* TAO_RTEC_DEFAULTEVENTDATA_IDL */