Reference

ACE_Errno_Guard(3)

Provides a wrapper to improve performance when thread-specific errno must be saved and restored in a block of code.

NAME

ACE_Errno_Guard - Provides a wrapper to improve performance when thread-specific errno must be saved and restored in a block of code.

SYNOPSIS

#include <ace/OS.h>
class ACE_Errno_Guard
{
  public:
    ACE_Errno_Guard (ACE_ERRNO_TYPE &errno_ref, int error);
    ACE_Errno_Guard (ACE_ERRNO_TYPE &errno_ref);
    ~ACE_Errno_Guard (void);
    int operator= (const ACE_ERRNO_TYPE &errno_ref);
    int operator= (int error);
    int operator== (int error);
    int operator!= (int error);
  private:
    ACE_ERRNO_TYPE *errno_ptr_;
    int error_;
};

DESCRIPTION

The typical use-case for this is the following:

int error = errno; call_some_function_that_might_change_errno (); errno = error;

This can be replaced with

{
ACE_Errno_Guard guard (errno);
call_some_function_that_might_change_errno (); }

This implementation is more elegant and more efficient since it avoids an unnecessary second access to thread-specific storage by caching a pointer to the value of errno in TSS.

Initialization and termination methods.

ACE_Errno_Guard (ACE_ERRNO_TYPE &errno_ref, int error);

Stash the value of error into error_ and initialize the errno_ptr_ to the address of errno_ref.

ACE_Errno_Guard (ACE_ERRNO_TYPE &errno_ref);

Stash the value of errno into error_ and initialize the errno_ptr_ to the address of errno_ref.

~ACE_Errno_Guard (void);

Reset the value of errno to error.

int operator= (const ACE_ERRNO_TYPE &errno_ref);

Assign errno_ref to error_.

int operator= (int error);

Assign error to error_.

int operator== (int error);

Compare error with error_ for equality.

int operator!= (int error);

Compare error with error_ for inequality.

AUTHOR

Doug Schmidt [email protected], Jesper S. M|ller [email protected], and a cast of thousands...

The ACE_Sched_Priority type should be used for platform-

independent thread and process priorities, by convention. int should be used for OS-specific priorities.

typedef for the _stat data structure

Giving unique ACE scoped names for some important

RTSignal-Related constants. Becuase sometimes, different platforms use different names for these constants.

LIBRARY

ace