summaryrefslogtreecommitdiff
path: root/ace/Module.h
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Module.h')
-rw-r--r--ace/Module.h209
1 files changed, 0 insertions, 209 deletions
diff --git a/ace/Module.h b/ace/Module.h
deleted file mode 100644
index a3e6f4126b8..00000000000
--- a/ace/Module.h
+++ /dev/null
@@ -1,209 +0,0 @@
-// -*- C++ -*-
-//==========================================================================
-/**
- * @file Module.h
- *
- * $Id$
- *
- * @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
- */
-//==========================================================================
-
-#ifndef ACE_MODULE_H
-#define ACE_MODULE_H
-
-#include /**/ "ace/pre.h"
-
-#include "ace/ACE_export.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "ace/Task_T.h"
-#include "ace/os_include/os_dirent.h"
-
-/**
- * @class ACE_Module_Base
- *
- * @brief Workaround HP/C++ compiler bug with enums in templates.
- *
- * Certain C++ compilers, e.g., the HP/UX 10.x and 9.x compilers,
- * seem to fail if enums are defined inside a template, hence we
- * have to move them into a base class.
- */
-class ACE_Export ACE_Module_Base
-{
-public:
- enum
- {
- /// Indicates that <close> should not delete any Tasks.
- M_DELETE_NONE = 0,
-
- /// Indicates that <close> should delete the writer Task.
- M_DELETE_READER = 1,
-
- /// Indicates that <close> should delete the reader Task.
- M_DELETE_WRITER = 2,
-
- /// Indicates that <close> deletes the Tasks.
- /**
- * Don't change this value without updating the same enum in class
- * ACE_Stream...
- * The <M_DELETE_READER> and <M_DELETE_WRITER> flags may be or'ed
- * together.
- */
- M_DELETE = 3
- };
-};
-
-/**
- * @class ACE_Module
- *
- * @brief 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>.
- */
-template <ACE_SYNCH_DECL>
-class ACE_Module : public ACE_Module_Base
-{
-public:
- friend class ACE_Shutup_GPlusPlus; // Turn off g++ warning
-
- // = Initialization and termination methods.
- /// Create an empty Module.
- ACE_Module (void);
-
- /// Shutdown the Module.
- ~ACE_Module (void);
-
- /// Create an initialized module with @a module_name as its identity
- /// and @a reader and @a writer as its tasks.
- 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);
-
- /**
- * 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>.
- */
- 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);
-
- /**
- * 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>.
- */
- int close (int flags = M_DELETE_NONE);
-
- // = ACE_Task manipulation routines
- /// Get the writer task.
- ACE_Task<ACE_SYNCH_USE> *writer (void);
-
- /**
- * 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>.
- */
- void writer (ACE_Task<ACE_SYNCH_USE> *q, int flags = M_DELETE_WRITER);
-
- /// Get the reader task.
- ACE_Task<ACE_SYNCH_USE> *reader (void);
-
- /**
- * 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>.
- */
- void reader (ACE_Task<ACE_SYNCH_USE> *q, int flags = M_DELETE_READER);
-
- /// Set and get pointer to sibling ACE_Task in an ACE_Module
- ACE_Task<ACE_SYNCH_USE> *sibling (ACE_Task<ACE_SYNCH_USE> *orig);
-
- // = Identify the module
- /// Get the module name.
- const ACE_TCHAR *name (void) const;
-
- /// Set the module name.
- void name (const ACE_TCHAR *);
-
- // = Argument to the Tasks.
- /// Get the argument passed to the tasks.
- void *arg (void) const;
-
- /// Set the argument passed to the tasks.
- void arg (void *);
-
- /// Link to other modules in the ustream stack
- void link (ACE_Module<ACE_SYNCH_USE> *m);
-
- /// Get the next pointer to the module above in the stream.
- ACE_Module<ACE_SYNCH_USE> *next (void);
-
- /// Set the next pointer to the module above in the stream.
- void next (ACE_Module<ACE_SYNCH_USE> *m);
-
- /// Dump the state of an object.
- void dump (void) const;
-
- /// Declare the dynamic allocation hooks.
- ACE_ALLOC_HOOK_DECLARE;
-
-private:
- /// Implements the close operation for either the reader or the
- /// writer task (depending on <which>).
- int close_i (int which, int flags);
-
- /// Pair of Tasks that form the "read-side" and "write-side" of the
- /// ACE_Module partitioning.
- ACE_Task<ACE_SYNCH_USE> *q_pair_[2];
-
- /// Name of the ACE_Module.
- ACE_TCHAR name_[MAXPATHLEN + 1];
-
- /// Next ACE_Module in the stack.
- ACE_Module<ACE_SYNCH_USE> *next_;
-
- /// Argument passed through to the reader and writer task when they
- /// are opened.
- void *arg_;
-
- /// Holds flags which are used to determine if the reader and writer
- /// task have to be deleted on exit
- int flags_;
-};
-
-#if defined (__ACE_INLINE__)
-#include "ace/Module.inl"
-#endif /* __ACE_INLINE__ */
-
-#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
-#include "ace/Module.cpp"
-#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
-
-#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
-#pragma implementation ("Module.cpp")
-#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
-
-#include /**/ "ace/post.h"
-
-#endif /* ACE_MODULE_H */