Realistic 3D camera system
3D camera system components
Public Member Functions | List of all members
asio::basic_signal_set< SignalSetService > Class Template Reference

Provides signal functionality. More...

#include <basic_signal_set.hpp>

Inheritance diagram for asio::basic_signal_set< SignalSetService >:
asio::basic_io_object< SignalSetService >

Public Member Functions

 basic_signal_set (asio::io_service &io_service)
 Construct a signal set without adding any signals. More...
 
 basic_signal_set (asio::io_service &io_service, int signal_number_1)
 Construct a signal set and add one signal. More...
 
 basic_signal_set (asio::io_service &io_service, int signal_number_1, int signal_number_2)
 Construct a signal set and add two signals. More...
 
 basic_signal_set (asio::io_service &io_service, int signal_number_1, int signal_number_2, int signal_number_3)
 Construct a signal set and add three signals. More...
 
void add (int signal_number)
 Add a signal to a signal_set. More...
 
asio::error_code add (int signal_number, asio::error_code &ec)
 Add a signal to a signal_set. More...
 
void remove (int signal_number)
 Remove a signal from a signal_set. More...
 
asio::error_code remove (int signal_number, asio::error_code &ec)
 Remove a signal from a signal_set. More...
 
void clear ()
 Remove all signals from a signal_set. More...
 
asio::error_code clear (asio::error_code &ec)
 Remove all signals from a signal_set. More...
 
void cancel ()
 Cancel all operations associated with the signal set. More...
 
asio::error_code cancel (asio::error_code &ec)
 Cancel all operations associated with the signal set. More...
 
template<typename SignalHandler >
 ASIO_INITFN_RESULT_TYPE (SignalHandler, void(asio::error_code, int)) async_wait(ASIO_MOVE_ARG(SignalHandler) handler)
 Start an asynchronous operation to wait for a signal to be delivered. More...
 
- Public Member Functions inherited from asio::basic_io_object< SignalSetService >
asio::io_serviceget_io_service ()
 Get the io_service associated with the object. More...
 

Additional Inherited Members

- Public Types inherited from asio::basic_io_object< SignalSetService >
typedef SignalSetService service_type
 The type of the service that will be used to provide I/O operations. More...
 
typedef service_type::implementation_type implementation_type
 The underlying implementation type of I/O object. More...
 
- Protected Member Functions inherited from asio::basic_io_object< SignalSetService >
 basic_io_object (asio::io_service &io_service)
 Construct a basic_io_object. More...
 
 ~basic_io_object ()
 Protected destructor to prevent deletion through this type. More...
 
service_typeget_service ()
 Get the service associated with the I/O object. More...
 
const service_typeget_service () const
 Get the service associated with the I/O object. More...
 
implementation_typeget_implementation ()
 Get the underlying implementation of the I/O object. More...
 
const implementation_typeget_implementation () const
 Get the underlying implementation of the I/O object. More...
 
- Protected Attributes inherited from asio::basic_io_object< SignalSetService >
service_typeservice
 
implementation_type implementation
 

Detailed Description

template<typename SignalSetService = signal_set_service>
class asio::basic_signal_set< SignalSetService >

Provides signal functionality.

The basic_signal_set class template provides the ability to perform an asynchronous wait for one or more signals to occur.

Most applications will use the asio::signal_set typedef.

Thread Safety
Distinct objects: Safe.
Shared objects: Unsafe.
Example
Performing an asynchronous wait:
void handler(
const asio::error_code& error,
int signal_number)
{
if (!error)
{
// A signal occurred.
}
}
...
// Construct a signal set registered for process termination.
asio::signal_set signals(io_service, SIGINT, SIGTERM);
// Start an asynchronous wait for one of the signals to occur.
signals.async_wait(handler);
Queueing of signal notifications

If a signal is registered with a signal_set, and the signal occurs when there are no waiting handlers, then the signal notification is queued. The next async_wait operation on that signal_set will dequeue the notification. If multiple notifications are queued, subsequent async_wait operations dequeue them one at a time. Signal notifications are dequeued in order of ascending signal number.

If a signal number is removed from a signal_set (using the remove or erase member functions) then any queued notifications for that signal are discarded.

Multiple registration of signals

The same signal number may be registered with different signal_set objects. When the signal occurs, one handler is called for each signal_set object.

Note that multiple registration only works for signals that are registered using Asio. The application must not also register a signal handler using functions such as signal() or sigaction().

Signal masking on POSIX platforms

POSIX allows signals to be blocked using functions such as sigprocmask() and pthread_sigmask(). For signals to be delivered, programs must ensure that any signals registered using signal_set objects are unblocked in at least one thread.

Definition at line 93 of file basic_signal_set.hpp.

Constructor & Destructor Documentation

template<typename SignalSetService = signal_set_service>
asio::basic_signal_set< SignalSetService >::basic_signal_set ( asio::io_service io_service)
inlineexplicit

Construct a signal set without adding any signals.

This constructor creates a signal set without registering for any signals.

Parameters
io_serviceThe io_service object that the signal set will use to dispatch handlers for any asynchronous operations performed on the set.

Definition at line 104 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
asio::basic_signal_set< SignalSetService >::basic_signal_set ( asio::io_service io_service,
int  signal_number_1 
)
inline

Construct a signal set and add one signal.

This constructor creates a signal set and registers for one signal.

Parameters
io_serviceThe io_service object that the signal set will use to dispatch handlers for any asynchronous operations performed on the set.
signal_number_1The signal number to be added.
Note
This constructor is equivalent to performing:
asio::signal_set signals(io_service);
signals.add(signal_number_1);

Definition at line 122 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
asio::basic_signal_set< SignalSetService >::basic_signal_set ( asio::io_service io_service,
int  signal_number_1,
int  signal_number_2 
)
inline

Construct a signal set and add two signals.

This constructor creates a signal set and registers for two signals.

Parameters
io_serviceThe io_service object that the signal set will use to dispatch handlers for any asynchronous operations performed on the set.
signal_number_1The first signal number to be added.
signal_number_2The second signal number to be added.
Note
This constructor is equivalent to performing:
asio::signal_set signals(io_service);
signals.add(signal_number_1);
signals.add(signal_number_2);

Definition at line 146 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
asio::basic_signal_set< SignalSetService >::basic_signal_set ( asio::io_service io_service,
int  signal_number_1,
int  signal_number_2,
int  signal_number_3 
)
inline

Construct a signal set and add three signals.

This constructor creates a signal set and registers for three signals.

Parameters
io_serviceThe io_service object that the signal set will use to dispatch handlers for any asynchronous operations performed on the set.
signal_number_1The first signal number to be added.
signal_number_2The second signal number to be added.
signal_number_3The third signal number to be added.
Note
This constructor is equivalent to performing:
asio::signal_set signals(io_service);
signals.add(signal_number_1);
signals.add(signal_number_2);
signals.add(signal_number_3);

Definition at line 176 of file basic_signal_set.hpp.

Member Function Documentation

template<typename SignalSetService = signal_set_service>
void asio::basic_signal_set< SignalSetService >::add ( int  signal_number)
inline

Add a signal to a signal_set.

This function adds the specified signal to the set. It has no effect if the signal is already in the set.

Parameters
signal_numberThe signal to be added to the set.
Exceptions
asio::system_errorThrown on failure.

Definition at line 198 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
asio::error_code asio::basic_signal_set< SignalSetService >::add ( int  signal_number,
asio::error_code ec 
)
inline

Add a signal to a signal_set.

This function adds the specified signal to the set. It has no effect if the signal is already in the set.

Parameters
signal_numberThe signal to be added to the set.
ecSet to indicate what error occurred, if any.

Definition at line 214 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
template<typename SignalHandler >
asio::basic_signal_set< SignalSetService >::ASIO_INITFN_RESULT_TYPE ( SignalHandler  ,
void(asio::error_code, int)   
)
inline

Start an asynchronous operation to wait for a signal to be delivered.

This function may be used to initiate an asynchronous wait against the signal set. It always returns immediately.

For each call to async_wait(), the supplied handler will be called exactly once. The handler will be called when:

  • One of the registered signals in the signal set occurs; or
Parameters
handlerThe handler to be called when the signal occurs. Copies will be made of the handler as required. The function signature of the handler must be:
void handler(
const asio::error_code& error, // Result of operation.
int signal_number // Indicates which signal occurred.
);
Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using asio::io_service::post().

Definition at line 367 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
void asio::basic_signal_set< SignalSetService >::cancel ( )
inline

Cancel all operations associated with the signal set.

This function forces the completion of any pending asynchronous wait operations against the signal set. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.

Cancellation does not alter the set of registered signals.

Exceptions
asio::system_errorThrown on failure.
Note
If a registered signal occurred before cancel() is called, then the handlers for asynchronous wait operations will:
  • have already been invoked; or
  • have been queued for invocation in the near future.

These handlers can no longer be cancelled, and therefore are passed an error code that indicates the successful completion of the wait operation.

Definition at line 308 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
asio::error_code asio::basic_signal_set< SignalSetService >::cancel ( asio::error_code ec)
inline

Cancel all operations associated with the signal set.

This function forces the completion of any pending asynchronous wait operations against the signal set. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.

Cancellation does not alter the set of registered signals.

Parameters
ecSet to indicate what error occurred, if any.
Note
If a registered signal occurred before cancel() is called, then the handlers for asynchronous wait operations will:
  • have already been invoked; or
  • have been queued for invocation in the near future.

These handlers can no longer be cancelled, and therefore are passed an error code that indicates the successful completion of the wait operation.

Definition at line 336 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
void asio::basic_signal_set< SignalSetService >::clear ( )
inline

Remove all signals from a signal_set.

This function removes all signals from the set. It has no effect if the set is already empty.

Exceptions
asio::system_errorThrown on failure.
Note
Removes all queued notifications.

Definition at line 266 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
asio::error_code asio::basic_signal_set< SignalSetService >::clear ( asio::error_code ec)
inline

Remove all signals from a signal_set.

This function removes all signals from the set. It has no effect if the set is already empty.

Parameters
ecSet to indicate what error occurred, if any.
Note
Removes all queued notifications.

Definition at line 282 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
void asio::basic_signal_set< SignalSetService >::remove ( int  signal_number)
inline

Remove a signal from a signal_set.

This function removes the specified signal from the set. It has no effect if the signal is not in the set.

Parameters
signal_numberThe signal to be removed from the set.
Exceptions
asio::system_errorThrown on failure.
Note
Removes any notifications that have been queued for the specified signal number.

Definition at line 232 of file basic_signal_set.hpp.

template<typename SignalSetService = signal_set_service>
asio::error_code asio::basic_signal_set< SignalSetService >::remove ( int  signal_number,
asio::error_code ec 
)
inline

Remove a signal from a signal_set.

This function removes the specified signal from the set. It has no effect if the signal is not in the set.

Parameters
signal_numberThe signal to be removed from the set.
ecSet to indicate what error occurred, if any.
Note
Removes any notifications that have been queued for the specified signal number.

Definition at line 251 of file basic_signal_set.hpp.


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