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