ACE  6.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Attributes | List of all members
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]

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. More...
 
void operator= (unsigned long option)
 Adds the specified option(s) to the object; does not replace them. More...
 
const void * arg (void) const
 Returns the "magic cookie" argument. More...
 
void arg (const void *)
 Set the "magic cookie" argument. More...
 
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. More...
 

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 

Static Public Attributes

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

Private Attributes

unsigned long options_
 Keeps track of the enabled options. More...
 
ACE_Time_Value timeout_
 Amount of time to wait for timeouts. More...
 
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

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.

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
optionsSpecifies the options to use; default is neither option (no reactor, no timeout).
timeoutSpecifies 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.
argA 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.

Member Function Documentation

const void * ACE_Synch_Options::arg ( void  ) const

Returns the "magic cookie" argument.

void ACE_Synch_Options::arg ( const void *  a)

Set the "magic cookie" argument.

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.

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

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

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.

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.

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.

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.

Member Data Documentation

ACE_Synch_Options::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

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.

ACE_Synch_Options ACE_Synch_Options::asynch
static

This is the default asynchronous setting.

ACE_Synch_Options ACE_Synch_Options::defaults
static

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

unsigned long ACE_Synch_Options::options_
private

Keeps track of the enabled options.

ACE_Synch_Options ACE_Synch_Options::synch
static

This is the default synchronous setting.

ACE_Time_Value ACE_Synch_Options::timeout_
private

Amount of time to wait for timeouts.


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