]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/asio/test/windows/overlapped_ptr.cpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / libs / asio / test / windows / overlapped_ptr.cpp
CommitLineData
7c673cae
FG
1//
2// overlapped_ptr.cpp
3// ~~~~~~~~~~~~~~~~~~
4//
f67539c2 5// Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
7c673cae
FG
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// Disable autolinking for unit tests.
12#if !defined(BOOST_ALL_NO_LIB)
13#define BOOST_ALL_NO_LIB 1
14#endif // !defined(BOOST_ALL_NO_LIB)
15
16// Test that header file is self-contained.
17#include <boost/asio/windows/overlapped_ptr.hpp>
18
20effc67 19#include <boost/asio/any_io_executor.hpp>
92f5a8d4 20#include <boost/asio/executor.hpp>
b32b8144 21#include <boost/asio/io_context.hpp>
7c673cae
FG
22#include "../unit_test.hpp"
23
24//------------------------------------------------------------------------------
25
26// windows_overlapped_ptr_compile test
27// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28// The following test checks that all public member functions on the class
29// windows::overlapped_ptr compile and link correctly. Runtime failures are
30// ignored.
31
32namespace windows_overlapped_ptr_compile {
33
34void overlapped_handler_1(const boost::system::error_code&, std::size_t)
35{
36}
37
38struct overlapped_handler_2
39{
40 void operator()(const boost::system::error_code&, std::size_t)
41 {
42 }
43};
44
45void test()
46{
47#if defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
48 using namespace boost::asio;
49 namespace win = boost::asio::windows;
50
51 try
52 {
b32b8144 53 io_context ioc;
20effc67
TL
54 boost::asio::any_io_executor ex1(ioc.get_executor());
55#if !defined(BOOST_ASIO_NO_TS_EXECUTORS)
56 boost::asio::executor ex2(ioc.get_executor());
57#endif // !defined(BOOST_ASIO_NO_TS_EXECUTORS)
7c673cae
FG
58
59 // basic_overlapped_ptr constructors.
60
61 win::overlapped_ptr ptr1;
62
b32b8144
FG
63 win::overlapped_ptr ptr2(ioc, &overlapped_handler_1);
64 win::overlapped_ptr ptr3(ioc, overlapped_handler_2());
7c673cae 65
92f5a8d4
TL
66 win::overlapped_ptr ptr4(ioc.get_executor(), &overlapped_handler_1);
67 win::overlapped_ptr ptr5(ioc.get_executor(), overlapped_handler_2());
20effc67
TL
68 win::overlapped_ptr ptr6(ex1, &overlapped_handler_1);
69 win::overlapped_ptr ptr7(ex1, overlapped_handler_2());
70#if !defined(BOOST_ASIO_NO_TS_EXECUTORS)
71 win::overlapped_ptr ptr8(ex2, &overlapped_handler_1);
72 win::overlapped_ptr ptr9(ex2, overlapped_handler_2());
73#endif // !defined(BOOST_ASIO_NO_TS_EXECUTORS)
92f5a8d4 74
7c673cae
FG
75 // overlapped_ptr functions.
76
77 ptr1.reset();
78
b32b8144
FG
79 ptr2.reset(ioc, &overlapped_handler_1);
80 ptr3.reset(ioc, overlapped_handler_2());
7c673cae 81
92f5a8d4
TL
82 ptr2.reset(ioc.get_executor(), &overlapped_handler_1);
83 ptr3.reset(ioc.get_executor(), overlapped_handler_2());
20effc67
TL
84 ptr2.reset(ex1, &overlapped_handler_1);
85 ptr3.reset(ex1, overlapped_handler_2());
86#if !defined(BOOST_ASIO_NO_TS_EXECUTORS)
87 ptr3.reset(ex2, &overlapped_handler_1);
88 ptr3.reset(ex2, overlapped_handler_2());
89#endif // !defined(BOOST_ASIO_NO_TS_EXECUTORS)
92f5a8d4 90
7c673cae
FG
91 OVERLAPPED* ov1 = ptr1.get();
92 (void)ov1;
93
20effc67
TL
94 const win::overlapped_ptr& ptr10(ptr1);
95 const OVERLAPPED* ov2 = ptr10.get();
7c673cae
FG
96 (void)ov2;
97
98 OVERLAPPED* ov3 = ptr1.release();
99 (void)ov3;
100
101 boost::system::error_code ec;
102 std::size_t bytes_transferred = 0;
103 ptr1.complete(ec, bytes_transferred);
104 }
105 catch (std::exception&)
106 {
107 }
108#endif // defined(BOOST_ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
109}
110
111} // namespace windows_overlapped_ptr_compile
112
113//------------------------------------------------------------------------------
114
115BOOST_ASIO_TEST_SUITE
116(
117 "windows/overlapped_ptr",
118 BOOST_ASIO_TEST_CASE(windows_overlapped_ptr_compile::test)
119)