NAME

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

SYNOPSIS

#include <ace/Module.h>

template<ACE_SYNCH_DECL> class ACE_Module : public ACE_Module_Base { public: friend class ACE_Shutup_GPlusPlus; // Turn off g++ warning; ACE_Module (void); ~ACE_Module (void); ACE_Module ( const ASYS_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 ASYS_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); void writer ( ACE_Task<ACE_SYNCH_USE> *q, int flags = M_DELETE_WRITER ); ACE_Task<ACE_SYNCH_USE> *reader (void); 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); const ASYS_TCHAR *name (void) const; void name (const ASYS_TCHAR *); void *arg (void) const; void arg (void *); void link (ACE_Module<ACE_SYNCH_USE> *m); ACE_Module<ACE_SYNCH_USE> *next (void); void next (ACE_Module<ACE_SYNCH_USE> *m); void dump (void) const; ACE_ALLOC_HOOK_DECLARE; private: int close_i (int which, int flags); ACE_Task<ACE_SYNCH_USE> *q_pair_[2]; ASYS_TCHAR name_[MAXNAMLEN + 1]; ACE_Module<ACE_SYNCH_USE> *next_; void *arg_; int flags_; };

DESCRIPTION

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.

Initialization and termination methods.

ACE_Module (void);

~ACE_Module (void);

ACE_Module (
    const ASYS_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 ASYS_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 manipulation routines

ACE_Task<ACE_SYNCH_USE> *writer (void);

void writer (ACE_Task<ACE_SYNCH_USE> *q, int flags = M_DELETE_WRITER);

ACE_Task<ACE_SYNCH_USE> *reader (void);

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);

Identify the module

const ASYS_TCHAR *name (void) const;

void name (const ASYS_TCHAR *);

Argument to the Tasks.

void *arg (void) const;

void arg (void *);

void link (ACE_Module<ACE_SYNCH_USE> *m);

ACE_Module<ACE_SYNCH_USE> *next (void);

void next (ACE_Module<ACE_SYNCH_USE> *m);

void dump (void) const;

ACE_ALLOC_HOOK_DECLARE;

AUTHOR

Doug Schmidt

LIBRARY

ace