Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Attributes

ACE_Synch_Options Class Reference

Contains the values of options used to determine the synchronous and asynchronous behavior. More...

#include <Synch_Options.h>

Collaboration diagram for ACE_Synch_Options:
Collaboration graph
[legend]

List of all members.

Public Types

enum  { USE_REACTOR = 01, USE_TIMEOUT = 02 }
 

Options flags for controlling synchronization.

More...

Public Member Functions

 ACE_Synch_Options (unsigned long options=0, const ACE_Time_Value &timeout=ACE_Time_Value::zero, const void *arg=0)
void set (unsigned long options=0, const ACE_Time_Value &timeout=ACE_Time_Value::zero, const void *arg=0)
bool operator[] (unsigned long option) const
 Returns true if the specified option(s) are enabled, false otherwise.
void operator= (unsigned long option)
 Adds the specified option(s) to the object; does not replace them.
const void * arg (void) const
 Returns the "magic cookie" argument.
void arg (const void *)
 Set the "magic cookie" argument.
const ACE_Time_Valuetimeout (void) const
void timeout (const ACE_Time_Value &tv)
const ACE_Time_Valuetime_value (void) const
void dump (void) const
 Dump the state of an object.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Static Public Attributes

static ACE_Synch_Options defaults
static ACE_Synch_Options synch
 This is the default synchronous setting.
static ACE_Synch_Options asynch
 This is the default asynchronous setting.

Private Attributes

unsigned long options_
 Keeps track of the enabled options.
ACE_Time_Value timeout_
 Amount of time to wait for timeouts.
const void * arg_

Detailed Description

Contains the values of options used to determine the synchronous and asynchronous behavior.

The supported set of options is depicted in the following table. The Reactor column indicates whether or not the USE_REACTOR option is supplied. The Timeout column specifies the period of time specified by the object; Unused implies that USE_TIMEOUT is not included in the options and the default timeout value, ACE_Time_Value::zero, is specified, either explicitly or by default.

ReactorTimeoutBehavior
yesUnusedInfinite timeout (using Reactor); this is the default.
yestimeTry asynch transaction for the specified time (using Reactor)
yes0,0Poll; try, if EWOULDBLOCK, return immediately (using Reactor)
noUnusedBlock until completion (don't use Reactor)
notimeWait up to specified amount of time for completion (don't use Reactor)
no0,0Poll and return immediately

Definition at line 56 of file Synch_Options.h.


Member Enumeration Documentation

anonymous enum

Options flags for controlling synchronization.

Note that these flags can be bit-wise "or'd" together if both options are desired.

Enumerator:
USE_REACTOR 

Use the Reactor.

USE_TIMEOUT 

Use the supplied timeout value.

Definition at line 64 of file Synch_Options.h.

  {
    /// Use the Reactor.
    USE_REACTOR = 01,
    /// Use the supplied timeout value.
    USE_TIMEOUT = 02
  };


Constructor & Destructor Documentation

ACE_Synch_Options::ACE_Synch_Options ( unsigned long  options = 0,
const ACE_Time_Value timeout = ACE_Time_Value::zero,
const void *  arg = 0 
)

Initialize the object to default values unless specified otherwise.

Parameters:
options Specifies the options to use; default is neither option (no reactor, no timeout).
timeout Specifies the period of time to use for the operation's timeout. The default is ACE_Time_Value::zero, noted as 0,0 in the behavior options table. If a non-zero timeout is specified, the USE_TIMEOUT option is added to options. To use a zero timeout, USE_TIMEOUT must be explicitly specified in options.
arg A completion tag that can be passed through the options; the class using ACE_Synch_Options can access this. ACE_Synch_Options makes no use of it internally.

Definition at line 34 of file Synch_Options.cpp.

{
  // ACE_TRACE ("ACE_Synch_Options::ACE_Synch_Options");
  this->set (options, timeout, arg);
}


Member Function Documentation

const void * ACE_Synch_Options::arg ( void   )  const

Returns the "magic cookie" argument.

Definition at line 97 of file Synch_Options.cpp.

{
  ACE_TRACE ("ACE_Synch_Options::arg");
  return this->arg_;
}

void ACE_Synch_Options::arg ( const void *  a  ) 

Set the "magic cookie" argument.

Definition at line 104 of file Synch_Options.cpp.

{
  ACE_TRACE ("ACE_Synch_Options::arg");
  this->arg_ = a;
}

void ACE_Synch_Options::dump ( void   )  const

Dump the state of an object.

void ACE_Synch_Options::operator= ( unsigned long  option  ) 

Adds the specified option(s) to the object; does not replace them.

Definition at line 69 of file Synch_Options.cpp.

{
  ACE_TRACE ("ACE_Synch_Options::operator=");
  this->options_ |= option;
}

bool ACE_Synch_Options::operator[] ( unsigned long  option  )  const

Returns true if the specified option(s) are enabled, false otherwise.

Definition at line 62 of file Synch_Options.cpp.

{
  ACE_TRACE ("ACE_Synch_Options::operator[]");
  return (this->options_ & option) != 0;
}

void ACE_Synch_Options::set ( unsigned long  options = 0,
const ACE_Time_Value timeout = ACE_Time_Value::zero,
const void *  arg = 0 
)

Initialize the object; arguments are the same as for the constructor.

Definition at line 43 of file Synch_Options.cpp.

{
  // ACE_TRACE ("ACE_Synch_Options::set");
  this->options_ = options;
  this->timeout_ = timeout;

  // Whoa, possible dependence on static initialization here.  This
  // function is called during initialization of the statics above.
  // But, ACE_Time_Value::zero is a static object.  Very fortunately,
  // its bits have a value of 0.
  if (this->timeout_ != ACE_Time_Value::zero)
    ACE_SET_BITS (this->options_, ACE_Synch_Options::USE_TIMEOUT);

  this->arg_ = arg;
}

const ACE_Time_Value * ACE_Synch_Options::time_value ( void   )  const

Returns a timeout pointer 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.

Definition at line 90 of file Synch_Options.cpp.

{
  ACE_TRACE ("ACE_Synch_Options::time_value");
  return (*this)[USE_TIMEOUT] ? &this->timeout_ : 0;
}

const ACE_Time_Value & ACE_Synch_Options::timeout ( void   )  const

Returns a reference to the ACE_Time_Value. This value only makes sense if (*this)[USE_TIMEOUT] is true.

Definition at line 76 of file Synch_Options.cpp.

{
  ACE_TRACE ("ACE_Synch_Options::timeout");
  return this->timeout_;
}

void ACE_Synch_Options::timeout ( const ACE_Time_Value tv  ) 

Set the timeout value. This method does not alter the options; in particular, it doesn't add USE_TIMEOUT to the options when a non-zero timeout is specified as the constructor and set() do.

Definition at line 83 of file Synch_Options.cpp.

{
  ACE_TRACE ("ACE_Synch_Options::timeout");
  this->timeout_ = tv;
}


Member Data Documentation

Declare the dynamic allocation hooks.

Definition at line 142 of file Synch_Options.h.

const void* ACE_Synch_Options::arg_ [private]

"Magic cookie" always passed in as an argument to the ACE_Reactor's schedule_timer() method. Used to communicate values for asynchronous programming.

Definition at line 156 of file Synch_Options.h.

This is the default asynchronous setting.

Definition at line 136 of file Synch_Options.h.

This is the default setting for options, which will block synchronously.

Definition at line 130 of file Synch_Options.h.

unsigned long ACE_Synch_Options::options_ [private]

Keeps track of the enabled options.

Definition at line 146 of file Synch_Options.h.

This is the default synchronous setting.

Definition at line 133 of file Synch_Options.h.

Amount of time to wait for timeouts.

Definition at line 149 of file Synch_Options.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines