summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/asio/src/doc/requirements/Service.qbk
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/asio/src/doc/requirements/Service.qbk')
-rw-r--r--3rdparty/asio/src/doc/requirements/Service.qbk40
1 files changed, 40 insertions, 0 deletions
diff --git a/3rdparty/asio/src/doc/requirements/Service.qbk b/3rdparty/asio/src/doc/requirements/Service.qbk
new file mode 100644
index 00000000000..24a1ae584e4
--- /dev/null
+++ b/3rdparty/asio/src/doc/requirements/Service.qbk
@@ -0,0 +1,40 @@
+[/
+ / Copyright (c) 2003-2016 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 and unambiguously derived from
+`execution_context::service`, or if it is publicly and unambiguously derived
+from another service. For a service `S`, `S::key_type` shall be valid and
+denote a type (C++Std [temp.deduct]), `is_base_of_v<typename S::key_type, S>`
+shall be `true`, and `S` shall satisfy the `Destructible` requirements (C++Std
+[destructible]).
+
+The first parameter of all service constructors shall be an lvalue reference to
+`execution_context`. This parameter denotes the `execution_context` object that
+represents a set of services, of which the service object will be a member.
+[inline_note These constructors may be called by the `make_service` function.]
+
+A service shall provide an explicit constructor with a single parameter of
+lvalue reference to `execution_context`. [inline_note This constructor may be
+called by the `use_service` function.]
+
+ class my_service : public execution_context::service
+ {
+ public:
+ typedef my_service key_type;
+ explicit my_service(execution_context& ctx);
+ my_service(execution_context& ctx, int some_value);
+ private:
+ virtual void shutdown() noexcept override;
+ ...
+ };
+
+A service's `shutdown` member function shall destroy all copies of user-defined
+function objects that are held by the service.
+
+[endsect]