| [/ |
| / Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com) |
| / |
| / Distributed under the Boost Software License, Version 1.0. (See accompanying |
| / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| /] |
| |
| [section:Service Service requirements] |
| |
| A class is a service if it is publicly derived from another service, or if it |
| is a class derived from `io_service::service` and contains a |
| publicly-accessible declaration as follows: |
| |
| static io_service::id id; |
| |
| All services define a one-argument constructor that takes a reference to the |
| `io_service` object that owns the service. This constructor is /explicit/, |
| preventing its participation in automatic conversions. For example: |
| |
| class my_service : public io_service::service |
| { |
| public: |
| static io_service::id id; |
| explicit my_service(io_service& ios); |
| private: |
| virtual void shutdown_service(); |
| ... |
| }; |
| |
| A service's `shutdown_service` member function must cause all copies of |
| user-defined handler objects that are held by the service to be destroyed. |
| |
| [endsect] |