Remote Call Framework 3.3
AmiIoHandler.hpp
1 
2 //******************************************************************************
3 // RCF - Remote Call Framework
4 //
5 // Copyright (c) 2005 - 2022, Delta V Software. All rights reserved.
6 // https://www.deltavsoft.com
7 //
8 // RCF is distributed under dual licenses - closed source or GPL.
9 // Consult your particular license for conditions of use.
10 //
11 // If you have not purchased a commercial license, you are using RCF under GPL terms.
12 //
13 // Version: 3.3
14 // Contact: support <at> deltavsoft.com
15 //
16 //******************************************************************************
17 
18 #ifndef INCLUDE_RCF_AMIIOHANDLER_HPP
19 #define INCLUDE_RCF_AMIIOHANDLER_HPP
20 
21 #include <RCF/Asio.hpp>
22 
23 namespace RCF {
24 
25  class AmiIoHandler;
26  class OverlappedAmi;
27  typedef std::shared_ptr<OverlappedAmi> OverlappedAmiPtr;
28 
29  class AmiIoHandler
30  {
31  public:
32 
33  AmiIoHandler(OverlappedAmiPtr overlappedPtr);
34 
35  AmiIoHandler(OverlappedAmiPtr overlappedPtr, const AsioErrorCode & ec);
36 
37  void operator()();
38 
39  void operator()(
40  const AsioErrorCode & ec);
41 
42  void operator()(
43  const AsioErrorCode & ec,
44  std::size_t bytesTransferred);
45 
46  OverlappedAmiPtr mOverlappedPtr;
47  std::size_t mIndex;
48 
49  AsioErrorCode mEc;
50  };
51 
52  class AmiTimerHandler
53  {
54  public:
55 
56  AmiTimerHandler(OverlappedAmiPtr overlappedPtr);
57 
58  void operator()(const AsioErrorCode & ec);
59 
60  OverlappedAmiPtr mOverlappedPtr;
61  std::size_t mIndex;
62  };
63 
64  void * asio_handler_allocate(std::size_t size, AmiIoHandler * pHandler);
65  void asio_handler_deallocate(void * pointer, std::size_t size, AmiIoHandler * pHandler);
66  void * asio_handler_allocate(std::size_t size, AmiTimerHandler * pHandler);
67  void asio_handler_deallocate(void * pointer, std::size_t size, AmiTimerHandler * pHandler);
68 
69 } // namespace RCF
70 
71 #endif // ! INCLUDE_RCF_AMIIOHANDLER_HPP
Definition: AmiIoHandler.hpp:23