1//
2// handler_continuation_hook.hpp
3// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4//
5// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6//
7// Distributed under the Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9//
10
11#ifndef ASIO_HANDLER_CONTINUATION_HOOK_HPP
12#define ASIO_HANDLER_CONTINUATION_HOOK_HPP
13
14
15#include "asio/detail/config.hpp"
16
17#include "asio/detail/push_options.hpp"
18
19namespace asio {
20
21/// Default continuation function for handlers.
22/**
23 * Asynchronous operations may represent a continuation of the asynchronous
24 * control flow associated with the current handler. The implementation can use
25 * this knowledge to optimise scheduling of the handler.
26 *
27 * Implement asio_handler_is_continuation for your own handlers to indicate
28 * when a handler represents a continuation.
29 *
30 * The default implementation of the continuation hook returns <tt>false</tt>.
31 *
32 * @par Example
33 * @code
34 * class my_handler;
35 *
36 * bool asio_handler_is_continuation(my_handler* context)
37 * {
38 *   return true;
39 * }
40 * @endcode
41 */
42inline bool asio_handler_is_continuation(...)
43{
44  return false;
45}
46
47} // namespace asio
48
49#include "asio/detail/pop_options.hpp"
50
51#endif // ASIO_HANDLER_CONTINUATION_HOOK_HPP
52