summaryrefslogtreecommitdiff
path: root/ace/RMCast/RMCast.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/RMCast/RMCast.h')
-rw-r--r--ace/RMCast/RMCast.h261
1 files changed, 0 insertions, 261 deletions
diff --git a/ace/RMCast/RMCast.h b/ace/RMCast/RMCast.h
deleted file mode 100644
index 22afdebe3ce..00000000000
--- a/ace/RMCast/RMCast.h
+++ /dev/null
@@ -1,261 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// ace
-//
-// = FILENAME
-// RMCast.h
-//
-// = AUTHOR
-// Carlos O'Ryan <coryan@uci.edu>
-//
-// ============================================================================
-
-#ifndef ACE_RMCAST_H
-#define ACE_RMCAST_H
-#include "ace/pre.h"
-
-#include "ace/OS.h"
-#include "RMCast_Export.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-class ACE_Message_Block;
-class ACE_RMCast_Proxy;
-
-// LynxOS 3.X defines the following macro
-#if defined(MT_DATA)
-#undef MT_DATA
-#endif /* MT_DATA */
-
-//! The RMCast namespace
-/*!
- Several simple data structures and enums are shared by all the
- RMCast components, this is the place where we put them by default.
-*/
-class ACE_RMCast_Export ACE_RMCast
-{
-public:
-
- //! The message types
- /*!
- Each message includes a type field in the header used by the
- receiver to correctly parse it.
- Classes with the same name as the message type describe the actual
- format of the message.
- */
- enum Message_Type
- {
- // Sender initiated
- MT_POLL,
- MT_ACK_JOIN,
- MT_ACK_LEAVE,
- MT_DATA,
- // Receiver initiated
- MT_JOIN,
- MT_LEAVE,
- MT_ACK,
- MT_LAST
- };
-
- //! Simle enum used to describe the state transitions for senders
- /*!
- State transition (and actions) for the senders.
- This configuration is pesimistic, any invalid message is cause
- enough to reclaim all the resources. This partially addresses
- situations where either accidentally or intentionally a sender is
- multicasting packets to the wrong group.
-
- <CODE>
- NON_EXISTENT JOINED<BR>
- ------------------------------------------<BR>
- POLL NON_EXISTENT NON_EXISTENT<BR>
- Destroy Destroy<BR>
- <BR>
- ACK NON_EXISTENT JOINED<BR>
- Noop Process/Ack<BR>
- <BR>
- JOIN JOINED NON_EXISTENT<BR>
- Send/Join_Ack Send/Join_Ack<BR>
- <BR>
- LEAVE NON_EXISTENT NON_EXISTENT<BR>
- Send/Leave_Ack Send/Leave_Ack<BR>
- Destroy<BR>
- <BR>
- ACK_JOIN NON_EXISTENT NON_EXISTENT<BR>
- Noop Destroy<BR>
- <BR>
- ACK_LEAVE NON_EXISTENT NON_EXISTENT<BR>
- Noop Destroy<BR>
- <BR>
- SEND_DATA NON_EXISTENT NON_EXISTENT<BR>
- Noop Destroy<BR>
- </CODE>
- */
- enum Sender_State
- {
- SS_NON_EXISTENT,
- SS_JOINED
- };
-
-
- // These structures define the basic layout of the messages.
-
- //! This is the main message sent by senders
- /*!
- <CODE>
- +---------+----------------------+<BR>
- | 8 bits | DATA |<BR>
- +---------+----------------------+<BR>
- | 32 bits | sequence_number |<BR>
- +---------+----------------------+<BR>
- | 32 bits | message_size |<BR>
- +---------+----------------------+<BR>
- | 32 bits | fragment_offset |<BR>
- +---------+----------------------+<BR>
- ? ? ? ? ? | 32 bits | payload_size |<BR>
- ? ? ? ? ? +---------+----------------------+<BR>
- | | payload |<BR>
- +---------+----------------------+<BR>
- </CODE>
- */
- struct Data
- {
- // Source ID is implicit in recvfrom()...
- ACE_UINT32 sequence_number;
- ACE_UINT32 total_size;
- ACE_UINT32 fragment_offset;
-
- // @@ TODO: we may want to add optional fields, such as:
- // - Polling clients for their status
- // - Sending the range of messages in the queue
- // - If we are using authentic group communication we may
- // piggyback the ACK / NAK messages
-
- ACE_Message_Block *payload;
-
- //! Pass the proxy source between layers
- ACE_RMCast_Proxy *source;
- };
-
- /*!
- <CODE>
- +---------+----------------------+<BR>
- | 8 bits | MT_POLL |<BR>
- +---------+----------------------+<BR>
- </CODE>
- */
- struct Poll
- {
- //! Pass the proxy source between layers
- ACE_RMCast_Proxy *source;
- };
-
- //! Receivers accept new members using this message
- /*!
- <CODE>
- +---------+----------------------+<BR>
- | 8 bits | MT_ACK_JOIN |<BR>
- +---------+----------------------+<BR>
- | 32 bits | next_sequence_number |<BR>
- +---------+----------------------+<BR>
- </CODE>
- */
- struct Ack_Join
- {
- ACE_UINT32 next_sequence_number;
-
- //! Pass the proxy source between layers
- ACE_RMCast_Proxy *source;
- };
-
- //! Senders acknowledge when receivers try to leave
- /*!
- <CODE>
- +---------+----------------------+<BR>
- | 8 bits | ACK_LEAVE |<BR>
- +---------+----------------------+<BR>
- </CODE>
- */
- struct Ack_Leave
- {
- //! Pass the proxy source between layers
- ACE_RMCast_Proxy *source;
- };
-
- //! Provide feedback to the sender about messages received and sent
- //! so far.
- /*!
- *
- * This message is used to provide feedback information to senders.
- * It contains two sequence numbers:
- * - \param next_expected: is the sequence number of the next message
- * expected, i.e. (next_expected-1) is the last message received
- * without any losses before it.
- * - \param highest_received: is the highest sequence number among
- * all the messages successfully received.
- * In other words, all messages lost (if any) are in the range:
- * [next_expected,highest_received)
- *
- * <CODE>
- * +---------+----------------------+<BR>
- * | 8 bits | MT_ACK |<BR>
- * +---------+----------------------+<BR>
- * | 32 bits | next_expected |<BR>
- * +---------+----------------------+<BR>
- * | 32 bits | highest_received |<BR>
- * +---------+----------------------+<BR>
- * </CODE>
- */
- struct Ack
- {
- //! The last message received without any losses before it.
- ACE_UINT32 next_expected;
-
- //! The last message successfully received
- ACE_UINT32 highest_received;
-
- //! Pass the proxy source between layers
- ACE_RMCast_Proxy *source;
- };
-
- //! Receivers send this message to indicate they want to join
- /*
- <CODE>
- +---------+----------------------+<BR>
- | 8 bits | MT_JOIN |<BR>
- +---------+----------------------+<BR>
- </CODE>
- */
- struct Join
- {
- //! Pass the proxy source between layers
- ACE_RMCast_Proxy *source;
- };
-
- //! Receivers send this message to disconnect gracefully
- /*!
- <CODE>
- +---------+----------------------+<BR>
- | 8 bits | MT_LEAVE |<BR>
- +---------+----------------------+<BR>
- </CODE>
- */
- struct Leave
- {
- //! Pass the proxy source between layers
- ACE_RMCast_Proxy *source;
- };
-};
-
-#if defined (__ACE_INLINE__)
-#include "RMCast.i"
-#endif /* __ACE_INLINE__ */
-
-#include "ace/post.h"
-#endif /* ACE_RMCAST_H */