summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/ECG_UDP_Protocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/ECG_UDP_Protocol.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/ECG_UDP_Protocol.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/ECG_UDP_Protocol.h b/TAO/orbsvcs/orbsvcs/Event/ECG_UDP_Protocol.h
new file mode 100644
index 00000000000..6cbbad89ff0
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Event/ECG_UDP_Protocol.h
@@ -0,0 +1,71 @@
+/* -*- C++ -*- */
+/**
+ * @file ECG_UDP_Protocol.h
+ *
+ * @brief Document the protocol to federate multiple Real-time Event
+ * Channels via UDP.
+ *
+ * $Id$
+ *
+ * @author Carlos O'Ryan <coryan@uci.edu>
+ *
+ * http://doc.ece.uci.edu/~coryan/EC/index.html
+ *
+ */
+#ifndef TAO_ECG_UDP_PROTOCOL_H
+#define TAO_ECG_UDP_PROTOCOL_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-all.h"
+
+/**
+ * @class TAO_ECG_UDP_Protocol
+ *
+ * @brief Define the protocol parameters to federate TAO's Real-time
+ * Event Service via UDP.
+ *
+ * <H2>MESSAGE FORMAT</H2>
+ * The messages header are encapsulated using CDR, with the
+ * following format:
+ *
+ * <CODE>
+ * struct Header {
+ * octet byte_order_flags;<BR>
+ * // bit 0 represents the byte order as in GIOP 1.1<BR>
+ * // bit 1 is set if this is the last fragment<BR>
+ * unsigned long request_id;<BR>
+ * // The request ID, protocols must not send two requests with<BR>
+ * // the same ID, protocols can be distinguished using recvfrom..<BR>
+ * unsigned long request_size;<BR>
+ * // The size of this request, this can be used to pre-allocate<BR>
+ * // the request buffer.<BR>
+ * unsgined long fragment_size;<BR>
+ * // The size of this fragment, excluding the header...<BR>
+ * unsigned long fragment_offset;<BR>
+ * // Where does this fragment fit in the complete message...<BR>
+ * unsigned long fragment_id;<BR>
+ * // The ID of this fragment...<BR>
+ * unsigned long fragment_count;<BR>
+ * // The total number of fragments to expect in this request<BR>
+ *<BR>
+ * // @todo This could be eliminated if efficient reassembly<BR>
+ * // could be implemented without it.<BR>
+ * octet padding[4];<BR>
+ *<BR>
+ * // Ensures the header ends at an 8-byte boundary.<BR>
+ * }; // size (in CDR stream) = 32<BR>
+ *
+ */
+class TAO_RTEvent_Serv_Export TAO_ECG_UDP_Protocol
+{
+public:
+ enum {
+ ECG_HEADER_SIZE = 32,
+ ECG_MIN_MTU = 32 + 8,
+ ECG_MAX_MTU = 65536, // Really optimistic...
+ ECG_DEFAULT_MTU = 1024
+ };
+};
+
+#include /**/ "ace/post.h"
+#endif /* TAO_ECG_UDP_PROTOCOL_H */