#include <Stream.h>
Inheritance diagram for ACE_Stream:


Public Types | |
| enum | { M_DELETE = 3 } |
Public Methods | |
| ACE_Stream (void *arg=0, ACE_Module< ACE_SYNCH_USE > *head=0, ACE_Module< ACE_SYNCH_USE > *tail=0) | |
| Create a Stream consisting of and <tail> as the Stream head and Stream tail, respectively. More... | |
| virtual int | open (void *arg, ACE_Module< ACE_SYNCH_USE > *head=0, ACE_Module< ACE_SYNCH_USE > *tail=0) |
| Create a Stream consisting of and <tail> as the Stream head and Stream tail, respectively. More... | |
| virtual int | close (int flags=M_DELETE) |
| Close down the stream and release all the resources. More... | |
| virtual | ~ACE_Stream (void) |
| Close down the stream and release all the resources. More... | |
| virtual int | push (ACE_Module< ACE_SYNCH_USE > *mod) |
| Add a new module <mod> right below the Stream head. More... | |
| virtual int | pop (int flags=M_DELETE) |
| Remove the <mod> right below the Stream head and close it down. More... | |
| virtual int | top (ACE_Module< ACE_SYNCH_USE > *&mod) |
| Return the top module on the stream (right below the stream head). More... | |
| 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>. More... | |
| 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>. More... | |
| virtual int | remove (const ACE_TCHAR *mod, int flags=M_DELETE) |
| Remove the named module <mod> from the stream. This bypasses the strict LIFO ordering of <push> and <pop>. More... | |
| virtual ACE_Module< ACE_SYNCH_USE > * | head (void) |
| Return current stream head. More... | |
| virtual ACE_Module< ACE_SYNCH_USE > * | tail (void) |
| Return current stream tail. More... | |
| virtual ACE_Module< ACE_SYNCH_USE > * | find (const ACE_TCHAR *mod) |
| Find a particular ACE_Module. More... | |
| virtual int | link (ACE_Stream< ACE_SYNCH_USE > &) |
| Create a pipe between two Streams. More... | |
| virtual int | unlink (void) |
| Remove a pipe formed between two Streams. More... | |
| virtual int | put (ACE_Message_Block *mb, ACE_Time_Value *timeout=0) |
| Send the message <mb> down the stream, starting at the Module below the Stream head. More... | |
| virtual int | get (ACE_Message_Block *&mb, ACE_Time_Value *timeout=0) |
| Read the message <mb> that is stored in the stream head. More... | |
| virtual int | control (ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd, void *args) |
| Send control message down the stream. More... | |
| virtual int | wait (void) |
| Synchronize with the final close of the stream. More... | |
| virtual void | dump (void) const |
| Dump the state of an object. More... | |
Public Attributes | |
| ACE_ALLOC_HOOK_DECLARE | |
| Declare the dynamic allocation hooks. More... | |
Private Methods | |
| int | unlink_i (void) |
| Actually perform the unlinking of two Streams (must be called with locks held). More... | |
| int | link_i (ACE_Stream< ACE_SYNCH_USE > &) |
| Actually perform the linking of two Streams (must be called with locks held). More... | |
| 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. More... | |
Private Attributes | |
| ACE_Module< ACE_SYNCH_USE > * | stream_head_ |
| Pointer to the head of the stream. More... | |
| ACE_Module< ACE_SYNCH_USE > * | stream_tail_ |
| Pointer to the tail of the stream. More... | |
| ACE_Stream< ACE_SYNCH_USE > * | linked_us_ |
| Pointer to an adjoining linked stream. More... | |
| ACE_SYNCH_MUTEX_T | lock_ |
| Protect the stream against race conditions. More... | |
| ACE_SYNCH_CONDITION_T | final_close_ |
| Use to tell all threads waiting on the close that we are done. More... | |
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.
|
|||||
|
|
|
||||||||||||||||||||
|
Create a Stream consisting of 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. |
|
||||||||||
|
Close down the stream and release all the resources.
|
|
||||||||||
|
Close down the stream and release all the resources.
|
|
||||||||||||||||
|
Send control message down the stream.
|
|
||||||||||
|
Dump the state of an object.
|
|
||||||||||
|
Find a particular ACE_Module.
|
|
||||||||||||||||
|
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). |
|
||||||||||
|
Return current stream head.
|
|
||||||||||||||||
|
Insert a new module <mod> below the named module <prev_name>.
|
|
||||||||||
|
Create a pipe between two Streams.
|
|
||||||||||
|
Actually perform the linking of two Streams (must be called with locks held).
|
|
||||||||||||||||||||
|
Create a Stream consisting of 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. |
|
||||||||||
|
Remove the <mod> right below the Stream head and close it down.
|
|
||||||||||
|
Add a new module <mod> right below the Stream head.
|
|
||||||||||||||||||||
|
Must a new module onto the Stream.
|
|
||||||||||||||||
|
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). |
|
||||||||||||||||
|
Remove the named module <mod> from the stream. This bypasses the strict LIFO ordering of <push> and <pop>.
|
|
||||||||||||||||||||
|
Replace the named module <replace_name> with a new module <mod>.
|
|
||||||||||
|
Return current stream tail.
|
|
||||||||||
|
Return the top module on the stream (right below the stream head).
|
|
||||||||||
|
Remove a pipe formed between two Streams.
|
|
||||||||||
|
Actually perform the unlinking of two Streams (must be called with locks held).
|
|
||||||||||
|
Synchronize with the final close of the stream.
|
|
|||||
|
|
|
|||||
|
Declare the dynamic allocation hooks.
|
|
|||||
|
Use to tell all threads waiting on the close that we are done.
|
|
|||||
|
Pointer to an adjoining linked stream.
|
|
|||||
|
Protect the stream against race conditions.
|
|
|||||
|
Pointer to the head of the stream.
|
|
|||||
|
Pointer to the tail of the stream.
|
1.2.13.1 written by Dimitri van Heesch,
© 1997-2001