summaryrefslogtreecommitdiff
path: root/ace/Stream.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Stream.h')
-rw-r--r--ace/Stream.h184
1 files changed, 0 insertions, 184 deletions
diff --git a/ace/Stream.h b/ace/Stream.h
deleted file mode 100644
index 25e756c4ddf..00000000000
--- a/ace/Stream.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// ace
-//
-// = FILENAME
-// Stream.h
-//
-// = AUTHOR
-// Doug Schmidt
-//
-// ============================================================================
-
-#if !defined (ACE_STREAM_H)
-#define ACE_STREAM_H
-
-//#include "ace/Multiplexor.h"
-
-#include "ace/ACE.h"
-#include "ace/IO_Cntl_Msg.h"
-#include "ace/Message_Block.h"
-#include "ace/Time_Value.h"
-#include "ace/Module.h"
-
-// Forward decls.
-template<ACE_SYNCH_1> class ACE_Stream_Iterator;
-//template<ACE_SYNCH_1> class ACE_Module;
-
-template <ACE_SYNCH_1>
-class ACE_Stream
- // = TITLE
- // This class is the primary abstraction for the ASX framework.
- // It is moduled after System V Stream.
- //
- // = DESCRIPTION
- // A Stream consists of a stack of <ACE_Modules>, each of which
- // contains two <ACE_Tasks>.
-{
-friend class ACE_Stream_Iterator<ACE_SYNCH_2>;
-public:
- enum
- {
- M_DELETE = 3
- // Indicates that close() deletes the Tasks. Don't change this
- // value without updating the same enum in class ACE_Module...
- };
-
- // = Initializatation and termination methods.
- ACE_Stream (void *arg = 0,
- ACE_Module<ACE_SYNCH_2> *head = 0,
- ACE_Module<ACE_SYNCH_2> *tail = 0);
- // Create a Stream consisting of <head> and <tail> as the Stream
- // head and Stream tail, respectively. If these are 0 then the
- // <ACE_Stream_Head> and <ACE_Stream_Tail> are used, respectively.
- // <arg> is the value past in to the open() methods of the tasks.
-
- int open (void *arg,
- ACE_Module<ACE_SYNCH_2> *head = 0,
- ACE_Module<ACE_SYNCH_2> *tail = 0);
- // Create a Stream consisting of <head> and <tail> as the Stream
- // head and Stream tail, respectively. If these are 0 then the
- // <ACE_Stream_Head> and <ACE_Stream_Tail> are used, respectively.
- // <arg> is the value past in to the open() methods of the tasks.
-
- int close (int flags = M_DELETE);
- // Close down the stream and release all the resources.
-
- ~ACE_Stream (void);
- // Close down the stream and release all the resources.
-
- // = ACE_Stream plumbing operations
-
- int push (ACE_Module<ACE_SYNCH_2> *mod);
- // Add a new module <mod> right below the Stream head.
-
- int pop (int flags = M_DELETE);
- // Remove the <mod> right below the Stream head and close it down.
-
- int top (ACE_Module<ACE_SYNCH_2> *&mod);
- // Return the top module on the stream (right below the stream
- // head).
-
- int remove (const char *mod, int flags = M_DELETE);
- // Remove the named module <mod> from the stream. This bypasses the
- // strict LIFO ordering of push() and pop().
-
- ACE_Module<ACE_SYNCH_2> *head (void);
- // Return current stream head.
-
- ACE_Module<ACE_SYNCH_2> *tail (void);
- // Return current stream tail.
-
- ACE_Module<ACE_SYNCH_2> *find (const char *mod);
- // Find a particular ACE_Module.
-
- int link (ACE_Stream<ACE_SYNCH_2> &);
- // Create a pipe between two Streams.
-
- int unlink (void);
- // Remove a pipe formed between two Streams.
-
- // = Blocking data transfer operations
- int put (ACE_Message_Block *mb, ACE_Time_Value *timeout);
- // Send the message <mb> down the stream, starting at the Module
- // below the Stream head. Wait for upto <timeout> amount of time
- // for the operation to complete (or block forever if <timeout> ==
- // 0).
-
- int get (ACE_Message_Block *&mb, ACE_Time_Value *timeout);
- // Read the message <mb> that is stored in the the stream head.
- // Wait for upto <timeout> amount of time for the operation to
- // complete (or block forever if <timeout> == 0).
-
- int control (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd, void *args);
- // Send control message down the stream.
-
- int wait (void);
- // Synchronize with the final close of the stream.
-
- void dump (void) const;
- // Dump the state of an object.
-
- ACE_ALLOC_HOOK_DECLARE;
- // Declare the dynamic allocation hooks.
-
-private:
- int unlink_i (void);
- // Actually perform the unlinking of two Streams (must be called
- // with locks held).
-
- int link_i (ACE_Stream<ACE_SYNCH_2> &);
- // Actually perform the linking of two Streams (must be called with
- // locks held).
-
- int push_module (ACE_Module<ACE_SYNCH_2> *,
- ACE_Module<ACE_SYNCH_2> * = 0,
- ACE_Module<ACE_SYNCH_2> * = 0);
- // Must a new module onto the Stream.
-
- ACE_Module<ACE_SYNCH_2> *stream_head_;
- // Pointer to the head of the stream.
-
- ACE_Module<ACE_SYNCH_2> *stream_tail_;
- // Pointer to the tail of the stream.
-
- ACE_Stream<ACE_SYNCH_2> *linked_us_;
- // Pointer to an adjoining linked stream.
-
- // = Synchronization objects used for thread-safe streams.
- ACE_SYNCH_MUTEX lock_;
- // Protect the stream against race conditions.
-
- ACE_SYNCH_CONDITION final_close_;
- // Use to tell all threads waiting on the close that we are done.
-};
-
-template <ACE_SYNCH_1>
-class ACE_Stream_Iterator
-{
-public:
- ACE_Stream_Iterator (const ACE_Stream<ACE_SYNCH_2> &sr);
- int next (const ACE_Module<ACE_SYNCH_2> *&mo);
- int advance (void);
-
-private:
- ACE_Module<ACE_SYNCH_2> *next_;
-};
-
-#if defined (__ACE_INLINE__)
-#include "ace/Stream.i"
-#endif /* __ACE_INLINE__ */
-
-#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
-#include "ace/Stream.cpp"
-#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
-
-#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
-#pragma implementation ("Stream.cpp")
-#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
-
-#endif /* ACE_STREAM_H */