123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- //
- // handler_alloc_hook.hpp
- // ~~~~~~~~~~~~~~~~~~~~~~
- //
- // Copyright (c) 2003-2008 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)
- //
- #ifndef BOOST_ASIO_HANDLER_ALLOC_HOOK_HPP
- #define BOOST_ASIO_HANDLER_ALLOC_HOOK_HPP
- #if defined(_MSC_VER) && (_MSC_VER >= 1200)
- # pragma once
- #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
- #include <boost/asio/detail/push_options.hpp>
- #include <boost/asio/detail/push_options.hpp>
- #include <cstddef>
- #include <boost/config.hpp>
- #include <boost/asio/detail/pop_options.hpp>
- namespace boost {
- namespace asio {
- /// Default allocation function for handlers.
- /**
- * Asynchronous operations may need to allocate temporary objects. Since
- * asynchronous operations have a handler function object, these temporary
- * objects can be said to be associated with the handler.
- *
- * Implement asio_handler_allocate and asio_handler_deallocate for your own
- * handlers to provide custom allocation for these temporary objects.
- *
- * This default implementation is simply:
- * @code
- * return ::operator new(size);
- * @endcode
- *
- * @note All temporary objects associated with a handler will be deallocated
- * before the upcall to the handler is performed. This allows the same memory to
- * be reused for a subsequent asynchronous operation initiated by the handler.
- *
- * @par Example
- * @code
- * class my_handler;
- *
- * void* asio_handler_allocate(std::size_t size, my_handler* context)
- * {
- * return ::operator new(size);
- * }
- *
- * void asio_handler_deallocate(void* pointer, std::size_t size,
- * my_handler* context)
- * {
- * ::operator delete(pointer);
- * }
- * @endcode
- */
- inline void* asio_handler_allocate(std::size_t size, ...)
- {
- return ::operator new(size);
- }
- /// Default deallocation function for handlers.
- /**
- * Implement asio_handler_allocate and asio_handler_deallocate for your own
- * handlers to provide custom allocation for the associated temporary objects.
- *
- * This default implementation is simply:
- * @code
- * ::operator delete(pointer);
- * @endcode
- *
- * @sa asio_handler_allocate.
- */
- inline void asio_handler_deallocate(void* pointer, std::size_t size, ...)
- {
- (void)(size);
- ::operator delete(pointer);
- }
- } // namespace asio
- } // namespace boost
- #include <boost/asio/detail/pop_options.hpp>
- #endif // BOOST_ASIO_HANDLER_ALLOC_HOOK_HPP
|