summaryrefslogtreecommitdiff
path: root/ace/Synch_Options.h
diff options
context:
space:
mode:
authorlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
committerlevine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-21 21:41:34 +0000
commita5fdebc5f6375078ec1763850a4ca23ec7fe6458 (patch)
treebcf0a25c3d45a209a6e3ac37b233a4812f29c732 /ace/Synch_Options.h
downloadATCD-a5fdebc5f6375078ec1763850a4ca23ec7fe6458.tar.gz
Initial revision
Diffstat (limited to 'ace/Synch_Options.h')
-rw-r--r--ace/Synch_Options.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/ace/Synch_Options.h b/ace/Synch_Options.h
new file mode 100644
index 00000000000..28e3300013c
--- /dev/null
+++ b/ace/Synch_Options.h
@@ -0,0 +1,135 @@
+/* -*- C++ -*- */
+// $Id$
+
+
+// ============================================================================
+//
+// = LIBRARY
+// ace
+//
+// = FILENAME
+// ACE_Synch_Options.h
+//
+// = AUTHOR
+// Doug Schmidt
+//
+// ============================================================================
+
+#if !defined (ACE_SYNCH_OPTIONS_H)
+#define ACE_SYNCH_OPTIONS_H
+
+#include "ace/ACE.h"
+
+class ACE_Export ACE_Synch_Options
+ // = TITLE
+ // Contains the values of options used to determine the
+ // synchronous and asynchronous behavior.
+ //
+ // DESCRIPTION =
+ // Values support the following behavior (TV == "timeout"
+ // and UR == "use ACE_Reactor"):
+ //
+ // Parameters | Description
+ // |
+ // TV | UR |
+ // -----|----------|-------------------------------
+ // | |
+ // NULL | yes | infinite timeout (using ACE_Reactor)
+ // | |
+ // time | yes | try asynch transaction for
+ // | | the specified time (using ACE_Reactor)
+ // | |
+ // 0,0 | yes | poll; try, if EWOULDBLOCK,
+ // | | then return immediately
+ // | | (using ACE_Reactor)
+ // | |
+ // NULL | no | block forever (don't use ACE_Reactor)
+ // | |
+ // time | no | do a blocking transaction
+ // | | for the specified time
+ // | | (don't use ACE_Reactor)
+ // | |
+ // 0,0 | no | poll; but do not initiate a
+ // | | nonblocking transaction
+ // | | (don't use ACE_Reactor)
+{
+public:
+ // = Options flags for controlling synchronization. Note that these
+ // flags can be bit-wise "or'd" together if both options are
+ // desired.
+ enum
+ {
+ USE_REACTOR = 01,
+ // Use the Reactor.
+ USE_TIMEOUT = 02
+ // Interprete the Time_Value.
+ };
+
+ // = Initialization methods.
+ ACE_Synch_Options (u_long options = 0,
+ const ACE_Time_Value &timeout = ACE_Time_Value::zero,
+ const void *arg = 0);
+ // Initialize the Synch_Options based on parameters.
+
+ void set (u_long options = 0,
+ const ACE_Time_Value &timeout = ACE_Time_Value::zero,
+ const void *arg = 0);
+ // Initialize the Synch_Options based on parameters.
+
+ int operator[] (u_long option) const;
+ // Get method for determining which options are enabled.
+
+ void operator= (u_long option);
+ // Set method for enabling certain options.
+
+ const void *arg (void) const;
+ // Returns the "magic cookie" argument.
+
+ void arg (const void *);
+ // Set the "magic cookie" argument.
+
+ const ACE_Time_Value &timeout (void) const;
+ // Returns a reference to the <Time_Value>. This value only makes
+ // sense if (*this)[USE_TIMEOUT] is true.
+
+ void timeout (ACE_Time_Value &tv);
+ // Set the <Time_Value>.
+
+ const ACE_Time_Value *time_value (void) const;
+ // Returns the address of the timeout <Time_Value> if
+ // (*this)[USE_TIMEOUT] is true, else 0. This should be used with
+ // care, e.g., the timeout pointer should not be stored in a manner
+ // that will lead to dangling pointers...
+
+ // = Static data members (singletons)
+
+ static ACE_Synch_Options defaults;
+ // This is the default setting for options, which will block
+ // synchronously.
+
+ static ACE_Synch_Options synch;
+ // This is the default synchronous setting.
+
+ static ACE_Synch_Options asynch;
+ // This is the default asynchronous setting.
+
+ void dump (void) const;
+ // Dump the state of an object.
+
+ ACE_ALLOC_HOOK_DECLARE;
+ // Declare the dynamic allocation hooks.
+
+private:
+ u_long options_;
+ // Keeps track of the enabled options.
+
+ ACE_Time_Value timeout_;
+ // Amount of time to wait for timeouts.
+
+ const void *arg_;
+ // "Magic cookie" always passed in as an argument to the ACE_Reactor's
+ // <schedule_timer> method. Used to communicate values for
+ // asynchronous programming.
+};
+
+#endif /* ACE_SYNCH_OPTIONS_H */