#include <Stream.h>
Collaboration diagram for ACE_Stream<>:
Public Types | |
M_DELETE = 3 | |
enum | { M_DELETE = 3 } |
Public Member Functions | |
ACE_Stream (void *arg=0, ACE_Module< ACE_SYNCH_USE > *head=0, ACE_Module< ACE_SYNCH_USE > *tail=0) | |
virtual int | open (void *arg, ACE_Module< ACE_SYNCH_USE > *head=0, ACE_Module< ACE_SYNCH_USE > *tail=0) |
virtual int | close (int flags=M_DELETE) |
Close down the stream and release all the resources. | |
virtual | ~ACE_Stream (void) |
Close down the stream and release all the resources. | |
virtual int | push (ACE_Module< ACE_SYNCH_USE > *mod) |
virtual int | pop (int flags=M_DELETE) |
are invoked to cleanup the tasks. | |
virtual int | top (ACE_Module< ACE_SYNCH_USE > *&mod) |
virtual int | insert (const ACE_TCHAR *prev_name, ACE_Module< ACE_SYNCH_USE > *mod) |
Insert a new module <mod> below the named module <prev_name>. | |
virtual int | replace (const ACE_TCHAR *replace_name, ACE_Module< ACE_SYNCH_USE > *mod, int flags=M_DELETE) |
Replace the named module <replace_name> with a new module <mod>. | |
virtual int | remove (const ACE_TCHAR *mod, int flags=M_DELETE) |
virtual ACE_Module< ACE_SYNCH_USE > * | head (void) |
Return current stream head. | |
virtual ACE_Module< ACE_SYNCH_USE > * | tail (void) |
Return current stream tail. | |
virtual ACE_Module< ACE_SYNCH_USE > * | find (const ACE_TCHAR *mod) |
Find a particular ACE_Module. | |
virtual int | link (ACE_Stream< ACE_SYNCH_USE > &) |
Create a pipe between two Streams. | |
virtual int | unlink (void) |
Remove a pipe formed between two Streams. | |
virtual int | put (ACE_Message_Block *mb, ACE_Time_Value *timeout=0) |
virtual int | get (ACE_Message_Block *&mb, ACE_Time_Value *timeout=0) |
virtual int | control (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd, void *args) |
Send control message down the stream. | |
virtual int | wait (void) |
Synchronize with the final close of the stream. | |
virtual void | dump (void) const |
Dump the state of an object. | |
Public Attributes | |
ACE_ALLOC_HOOK_DECLARE | |
Declare the dynamic allocation hooks. | |
Private Member Functions | |
int | unlink_i (void) |
int | link_i (ACE_Stream< ACE_SYNCH_USE > &) |
int | push_module (ACE_Module< ACE_SYNCH_USE > *, ACE_Module< ACE_SYNCH_USE > *=0, ACE_Module< ACE_SYNCH_USE > *=0) |
Must a new module onto the Stream. | |
Private Attributes | |
ACE_Module< ACE_SYNCH_USE > * | stream_head_ |
Pointer to the head of the stream. | |
ACE_Module< ACE_SYNCH_USE > * | stream_tail_ |
Pointer to the tail of the stream. | |
ACE_Stream< ACE_SYNCH_USE > * | linked_us_ |
Pointer to an adjoining linked stream. | |
ACE_SYNCH_MUTEX_T | lock_ |
Protect the stream against race conditions. | |
ACE_SYNCH_CONDITION_T | final_close_ |
Use to tell all threads waiting on the close that we are done. | |
Friends | |
class | ACE_Stream_Iterator< ACE_SYNCH_USE > |
A Stream consists of a stack of <ACE_Modules>, each of which contains two <ACE_Tasks>. Even though the methods in this class are virtual, this class isn't really intended for subclassing unless you know what you are doing. In particular, the <ACE_Stream> destructor calls <close>, which won't be overridden properly unless you call it in a subclass destructor.
anonymous enum |
M_DELETE | Indicates that <close> deletes the Tasks. Don't change this value without updating the same enum in class ACE_Module... |
ACE_Stream<>::ACE_Stream | ( | void * | arg = 0 , |
|
ACE_Module< ACE_SYNCH_USE > * | head = 0 , |
|||
ACE_Module< ACE_SYNCH_USE > * | 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.
ACE_Stream<>::~ACE_Stream | ( | void | ) | [virtual] |
Close down the stream and release all the resources.
int ACE_Stream<>::close | ( | int | flags = M_DELETE |
) | [virtual] |
Close down the stream and release all the resources.
int ACE_Stream<>::control | ( | ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds | cmd, | |
void * | args | |||
) | [virtual] |
Send control message down the stream.
ACE_BEGIN_VERSIONED_NAMESPACE_DECL void ACE_Stream<>::dump | ( | void | ) | const [virtual] |
Dump the state of an object.
ACE_Module< ACE_SYNCH_USE > * ACE_Stream<>::find | ( | const ACE_TCHAR * | mod | ) | [virtual] |
Find a particular ACE_Module.
int ACE_Stream<>::get | ( | ACE_Message_Block *& | mb, | |
ACE_Time_Value * | timeout = 0 | |||
) | [virtual] |
Read the message <mb> that is stored in the stream head. Wait for upto <timeout> amount of absolute time for the operation to complete (or block forever if <timeout> == 0).
ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_Module< ACE_SYNCH_USE > * ACE_Stream<>::head | ( | void | ) | [virtual] |
Return current stream head.
int ACE_Stream<>::insert | ( | const ACE_TCHAR * | prev_name, | |
ACE_Module< ACE_SYNCH_USE > * | mod | |||
) | [virtual] |
Insert a new module <mod> below the named module <prev_name>.
int ACE_Stream<>::link | ( | ACE_Stream< ACE_SYNCH_USE > & | ) | [virtual] |
Create a pipe between two Streams.
int ACE_Stream<>::link_i | ( | ACE_Stream< ACE_SYNCH_USE > & | ) | [private] |
Actually perform the linking of two Streams (must be called with locks held).
int ACE_Stream<>::open | ( | void * | arg, | |
ACE_Module< ACE_SYNCH_USE > * | head = 0 , |
|||
ACE_Module< ACE_SYNCH_USE > * | tail = 0 | |||
) | [virtual] |
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 ACE_Stream<>::pop | ( | int | flags = M_DELETE |
) | [virtual] |
are invoked to cleanup the tasks.
int ACE_Stream<>::push | ( | ACE_Module< ACE_SYNCH_USE > * | mod | ) | [virtual] |
Add a new module <mod> right below the Stream head. The <open()> hook methods of the <ACE_Tasks> in this <ACE_Module> are invoked to initialize the tasks.
int ACE_Stream<>::push_module | ( | ACE_Module< ACE_SYNCH_USE > * | , | |
ACE_Module< ACE_SYNCH_USE > * | = 0 , |
|||
ACE_Module< ACE_SYNCH_USE > * | = 0 | |||
) | [private] |
Must a new module onto the Stream.
int ACE_Stream<>::put | ( | ACE_Message_Block * | mb, | |
ACE_Time_Value * | timeout = 0 | |||
) | [virtual] |
Send the message <mb> down the stream, starting at the Module below the Stream head. Wait for upto <timeout> amount of absolute time for the operation to complete (or block forever if <timeout> == 0).
int ACE_Stream<>::remove | ( | const ACE_TCHAR * | mod, | |
int | flags = M_DELETE | |||
) | [virtual] |
Remove the named module <mod> from the stream. This bypasses the strict LIFO ordering of <push> and <pop>.
int ACE_Stream<>::replace | ( | const ACE_TCHAR * | replace_name, | |
ACE_Module< ACE_SYNCH_USE > * | mod, | |||
int | flags = M_DELETE | |||
) | [virtual] |
Replace the named module <replace_name> with a new module <mod>.
ACE_INLINE ACE_Module< ACE_SYNCH_USE > * ACE_Stream<>::tail | ( | void | ) | [virtual] |
Return current stream tail.
int ACE_Stream<>::top | ( | ACE_Module< ACE_SYNCH_USE > *& | mod | ) | [virtual] |
Return the top module on the stream (right below the stream head).
int ACE_Stream<>::unlink | ( | void | ) | [virtual] |
Remove a pipe formed between two Streams.
int ACE_Stream<>::unlink_i | ( | void | ) | [private] |
Actually perform the unlinking of two Streams (must be called with locks held).
ACE_INLINE int ACE_Stream<>::wait | ( | void | ) | [virtual] |
Synchronize with the final close of the stream.
friend class ACE_Stream_Iterator< ACE_SYNCH_USE > [friend] |
ACE_Stream<>::ACE_ALLOC_HOOK_DECLARE |
Declare the dynamic allocation hooks.
ACE_SYNCH_CONDITION_T ACE_Stream<>::final_close_ [private] |
Use to tell all threads waiting on the close that we are done.
ACE_Stream<ACE_SYNCH_USE>* ACE_Stream<>::linked_us_ [private] |
Pointer to an adjoining linked stream.
ACE_SYNCH_MUTEX_T ACE_Stream<>::lock_ [private] |
Protect the stream against race conditions.
ACE_Module<ACE_SYNCH_USE>* ACE_Stream<>::stream_head_ [private] |
Pointer to the head of the stream.
ACE_Module<ACE_SYNCH_USE>* ACE_Stream<>::stream_tail_ [private] |
Pointer to the tail of the stream.