#include <Stream.h>
Public Types | |
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) |
Remove the mod right below the Stream head and close it down. | |
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_SYNCH_DECL >::ACE_Stream | ( | void * | arg = 0 , |
|
ACE_Module< ACE_SYNCH_USE > * | head = 0 , |
|||
ACE_Module< ACE_SYNCH_USE > * | tail = 0 | |||
) | [inline] |
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_SYNCH_DECL >::~ACE_Stream | ( | void | ) | [inline, virtual] |
Close down the stream and release all the resources.
int ACE_Stream< ACE_SYNCH_DECL >::close | ( | int | flags = M_DELETE |
) | [inline, virtual] |
Close down the stream and release all the resources.
int ACE_Stream< ACE_SYNCH_DECL >::control | ( | ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds | cmd, | |
void * | args | |||
) | [inline, virtual] |
Send control message down the stream.
void ACE_Stream< ACE_SYNCH_DECL >::dump | ( | void | ) | const [inline, virtual] |
Dump the state of an object.
ACE_Module< ACE_SYNCH_USE > * ACE_Stream< ACE_SYNCH_DECL >::find | ( | const ACE_TCHAR * | mod | ) | [inline, virtual] |
Find a particular ACE_Module.
int ACE_Stream< ACE_SYNCH_DECL >::get | ( | ACE_Message_Block *& | mb, | |
ACE_Time_Value * | timeout = 0 | |||
) | [inline, 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_Module< ACE_SYNCH_USE > * ACE_Stream< ACE_SYNCH_DECL >::head | ( | void | ) | [inline, virtual] |
Return current stream head.
int ACE_Stream< ACE_SYNCH_DECL >::insert | ( | const ACE_TCHAR * | prev_name, | |
ACE_Module< ACE_SYNCH_USE > * | mod | |||
) | [inline, virtual] |
Insert a new module mod below the named module <prev_name>.
int ACE_Stream< ACE_SYNCH_DECL >::link | ( | ACE_Stream< ACE_SYNCH_USE > & | us | ) | [inline, virtual] |
Create a pipe between two Streams.
int ACE_Stream< ACE_SYNCH_DECL >::link_i | ( | ACE_Stream< ACE_SYNCH_USE > & | us | ) | [inline, private] |
Actually perform the linking of two Streams (must be called with locks held).
int ACE_Stream< ACE_SYNCH_DECL >::open | ( | void * | arg, | |
ACE_Module< ACE_SYNCH_USE > * | head = 0 , |
|||
ACE_Module< ACE_SYNCH_USE > * | tail = 0 | |||
) | [inline, 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< ACE_SYNCH_DECL >::pop | ( | int | flags = M_DELETE |
) | [inline, virtual] |
Remove the mod right below the Stream head and close it down.
are invoked to cleanup the tasks.
int ACE_Stream< ACE_SYNCH_DECL >::push | ( | ACE_Module< ACE_SYNCH_USE > * | mod | ) | [inline, 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< ACE_SYNCH_DECL >::push_module | ( | ACE_Module< ACE_SYNCH_USE > * | new_top, | |
ACE_Module< ACE_SYNCH_USE > * | current_top = 0 , |
|||
ACE_Module< ACE_SYNCH_USE > * | head = 0 | |||
) | [inline, private] |
Must a new module onto the Stream.
int ACE_Stream< ACE_SYNCH_DECL >::put | ( | ACE_Message_Block * | mb, | |
ACE_Time_Value * | timeout = 0 | |||
) | [inline, 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< ACE_SYNCH_DECL >::remove | ( | const ACE_TCHAR * | mod, | |
int | flags = M_DELETE | |||
) | [inline, virtual] |
Remove the named module mod from the stream. This bypasses the strict LIFO ordering of <push> and <pop>.
int ACE_Stream< ACE_SYNCH_DECL >::replace | ( | const ACE_TCHAR * | replace_name, | |
ACE_Module< ACE_SYNCH_USE > * | mod, | |||
int | flags = M_DELETE | |||
) | [inline, virtual] |
Replace the named module replace_name with a new module mod.
ACE_Module< ACE_SYNCH_USE > * ACE_Stream< ACE_SYNCH_DECL >::tail | ( | void | ) | [inline, virtual] |
Return current stream tail.
int ACE_Stream< ACE_SYNCH_DECL >::top | ( | ACE_Module< ACE_SYNCH_USE > *& | mod | ) | [inline, virtual] |
Return the top module on the stream (right below the stream head).
int ACE_Stream< ACE_SYNCH_DECL >::unlink | ( | void | ) | [inline, virtual] |
Remove a pipe formed between two Streams.
int ACE_Stream< ACE_SYNCH_DECL >::unlink_i | ( | void | ) | [inline, private] |
Actually perform the unlinking of two Streams (must be called with locks held).
int ACE_Stream< ACE_SYNCH_DECL >::wait | ( | void | ) | [inline, virtual] |
Synchronize with the final close of the stream.
friend class ACE_Stream_Iterator< ACE_SYNCH_USE > [friend] |
ACE_Stream< ACE_SYNCH_DECL >::ACE_ALLOC_HOOK_DECLARE |
Declare the dynamic allocation hooks.
ACE_SYNCH_CONDITION_T ACE_Stream< ACE_SYNCH_DECL >::final_close_ [private] |
Use to tell all threads waiting on the close that we are done.
ACE_Stream<ACE_SYNCH_USE>* ACE_Stream< ACE_SYNCH_DECL >::linked_us_ [private] |
Pointer to an adjoining linked stream.
ACE_SYNCH_MUTEX_T ACE_Stream< ACE_SYNCH_DECL >::lock_ [private] |
Protect the stream against race conditions.
ACE_Module<ACE_SYNCH_USE>* ACE_Stream< ACE_SYNCH_DECL >::stream_head_ [private] |
Pointer to the head of the stream.
ACE_Module<ACE_SYNCH_USE>* ACE_Stream< ACE_SYNCH_DECL >::stream_tail_ [private] |
Pointer to the tail of the stream.