ACE_Module<> Class Template Reference

An abstraction for managing a bi-directional flow of messages. More...

#include <Module.h>

Inheritance diagram for ACE_Module<>:

Inheritance graph
[legend]
Collaboration diagram for ACE_Module<>:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ACE_Module (void)
 Create an empty Module.
virtual ~ACE_Module (void)
 Shutdown the Module.
 ACE_Module (const ACE_TCHAR *module_name, ACE_Task< ACE_SYNCH_USE > *writer=0, ACE_Task< ACE_SYNCH_USE > *reader=0, void *args=0, int flags=M_DELETE)
int open (const ACE_TCHAR *module_name, ACE_Task< ACE_SYNCH_USE > *writer=0, ACE_Task< ACE_SYNCH_USE > *reader=0, void *a=0, int flags=M_DELETE)
int close (int flags=M_DELETE_NONE)
ACE_Task< ACE_SYNCH_USE > * writer (void)
 Get the writer task.
void writer (ACE_Task< ACE_SYNCH_USE > *q, int flags=M_DELETE_WRITER)
ACE_Task< ACE_SYNCH_USE > * reader (void)
 Get the reader task.
void reader (ACE_Task< ACE_SYNCH_USE > *q, int flags=M_DELETE_READER)
ACE_Task< ACE_SYNCH_USE > * sibling (ACE_Task< ACE_SYNCH_USE > *orig)
 Set and get pointer to sibling ACE_Task in an ACE_Module.
const ACE_TCHARname (void) const
 Get the module name.
void name (const ACE_TCHAR *)
 Set the module name.
void * arg (void) const
 Get the argument passed to the tasks.
void arg (void *)
 Set the argument passed to the tasks.
void link (ACE_Module< ACE_SYNCH_USE > *m)
 Link to other modules in the ustream stack.
ACE_Module< ACE_SYNCH_USE > * next (void)
 Get the next pointer to the module above in the stream.
void next (ACE_Module< ACE_SYNCH_USE > *m)
 Set the next pointer to the module above in the stream.
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 close_i (int which, int flags)

Private Attributes

ACE_Task< ACE_SYNCH_USE > * q_pair_ [2]
ACE_TCHAR name_ [MAXPATHLEN+1]
 Name of the ACE_Module.
ACE_Module< ACE_SYNCH_USE > * next_
 Next ACE_Module in the stack.
void * arg_
int flags_


Detailed Description

template<ACE_SYNCH_DECL>
class ACE_Module<>

An abstraction for managing a bi-directional flow of messages.

This is based on the Module concept in System V Streams, which contains a pair of Tasks, one for handling upstream processing, one for handling downstream processing. In general, you shouldn't subclass from this class, but instead subclass from the ACE_Task.


Constructor & Destructor Documentation

template<ACE_SYNCH_DECL >
ACE_Module<>::ACE_Module ( void   ) 

Create an empty Module.

template<ACE_SYNCH_DECL >
virtual ACE_Module<>::~ACE_Module ( void   )  [virtual]

Shutdown the Module.

template<ACE_SYNCH_DECL >
ACE_Module<>::ACE_Module ( const ACE_TCHAR module_name,
ACE_Task< ACE_SYNCH_USE > *  writer = 0,
ACE_Task< ACE_SYNCH_USE > *  reader = 0,
void *  args = 0,
int  flags = M_DELETE 
)

Create an initialized module with module_name as its identity and reader and writer as its tasks.


Member Function Documentation

template<ACE_SYNCH_DECL >
int ACE_Module<>::open ( const ACE_TCHAR module_name,
ACE_Task< ACE_SYNCH_USE > *  writer = 0,
ACE_Task< ACE_SYNCH_USE > *  reader = 0,
void *  a = 0,
int  flags = M_DELETE 
)

Initialize the module with <module_name> as its identity and <reader> and <writer> as its tasks. Previously register reader or writers or closed down and deleted according to the value of flags_. Should not be called from within <ACE_Task::module_closed>.

template<ACE_SYNCH_DECL >
int ACE_Module<>::close ( int  flags = M_DELETE_NONE  ) 

Close down the module and its tasks. The flags argument can be used to override the default behaviour, which depends on previous flags values in calls to c'tor, <open>, <reader>, and <writer>. A previous value M_DELETE[_XXX] can not be overridden. Should not be called from within <ACE_Task::module_closed>.

template<ACE_SYNCH_DECL >
ACE_Task<ACE_SYNCH_USE>* ACE_Module<>::writer ( void   ) 

Get the writer task.

template<ACE_SYNCH_DECL >
void ACE_Module<>::writer ( ACE_Task< ACE_SYNCH_USE > *  q,
int  flags = M_DELETE_WRITER 
)

Set the writer task. flags can be used to indicate that the module should delete the writer during a call to close or to the destructor. If a previous writer exists, it is closed. It may also be deleted, depending on the old flags_ value. Should not be called from within <ACE_Task::module_closed>.

template<ACE_SYNCH_DECL >
ACE_Task<ACE_SYNCH_USE>* ACE_Module<>::reader ( void   ) 

Get the reader task.

template<ACE_SYNCH_DECL >
void ACE_Module<>::reader ( ACE_Task< ACE_SYNCH_USE > *  q,
int  flags = M_DELETE_READER 
)

Set the reader task. flags can be used to indicate that the module should delete the reader during a call to close or to the destructor. If a previous reader exists, it is closed. It may also be deleted, depending on the old flags_ value. Should not be called from within <ACE_Task::module_closed>.

template<ACE_SYNCH_DECL >
ACE_Task<ACE_SYNCH_USE>* ACE_Module<>::sibling ( ACE_Task< ACE_SYNCH_USE > *  orig  ) 

Set and get pointer to sibling ACE_Task in an ACE_Module.

template<ACE_SYNCH_DECL >
const ACE_TCHAR* ACE_Module<>::name ( void   )  const

Get the module name.

template<ACE_SYNCH_DECL >
void ACE_Module<>::name ( const ACE_TCHAR  ) 

Set the module name.

template<ACE_SYNCH_DECL >
void* ACE_Module<>::arg ( void   )  const

Get the argument passed to the tasks.

template<ACE_SYNCH_DECL >
void ACE_Module<>::arg ( void *   ) 

Set the argument passed to the tasks.

template<ACE_SYNCH_DECL >
void ACE_Module<>::link ( ACE_Module< ACE_SYNCH_USE > *  m  ) 

Link to other modules in the ustream stack.

template<ACE_SYNCH_DECL >
ACE_Module<ACE_SYNCH_USE>* ACE_Module<>::next ( void   ) 

Get the next pointer to the module above in the stream.

template<ACE_SYNCH_DECL >
void ACE_Module<>::next ( ACE_Module< ACE_SYNCH_USE > *  m  ) 

Set the next pointer to the module above in the stream.

template<ACE_SYNCH_DECL >
void ACE_Module<>::dump ( void   )  const

Dump the state of an object.

template<ACE_SYNCH_DECL >
int ACE_Module<>::close_i ( int  which,
int  flags 
) [private]

Implements the close operation for either the reader or the writer task (depending on <which>).


Member Data Documentation

template<ACE_SYNCH_DECL >
ACE_Module<>::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

template<ACE_SYNCH_DECL >
ACE_Task<ACE_SYNCH_USE>* ACE_Module<>::q_pair_[2] [private]

Pair of Tasks that form the "read-side" and "write-side" of the ACE_Module partitioning.

template<ACE_SYNCH_DECL >
ACE_TCHAR ACE_Module<>::name_[MAXPATHLEN+1] [private]

Name of the ACE_Module.

template<ACE_SYNCH_DECL >
ACE_Module<ACE_SYNCH_USE>* ACE_Module<>::next_ [private]

Next ACE_Module in the stack.

template<ACE_SYNCH_DECL >
void* ACE_Module<>::arg_ [private]

Argument passed through to the reader and writer task when they are opened.

template<ACE_SYNCH_DECL >
int ACE_Module<>::flags_ [private]

Holds flags which are used to determine if the reader and writer task have to be deleted on exit


The documentation for this class was generated from the following file:

Generated on Wed Apr 23 02:40:10 2008 for ACE by  doxygen 1.5.5