Remote Call Framework 3.2
AmiIoHandler.hpp
1 
2 //******************************************************************************
3 // RCF - Remote Call Framework
4 //
5 // Copyright (c) 2005 - 2020, Delta V Software. All rights reserved.
6 // http://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
12 // under GPL terms.
13 //
14 // Version: 3.2
15 // Contact: support <at> deltavsoft.com
16 //
17 //******************************************************************************
18 
19 #ifndef INCLUDE_RCF_AMIIOHANDLER_HPP
20 #define INCLUDE_RCF_AMIIOHANDLER_HPP
21 
22 #include <RCF/Asio.hpp>
23 
24 namespace RCF {
25 
26  class AmiIoHandler;
27  class OverlappedAmi;
28  typedef std::shared_ptr<OverlappedAmi> OverlappedAmiPtr;
29 
30  class AmiIoHandler
31  {
32  public:
33 
34  AmiIoHandler(OverlappedAmiPtr overlappedPtr);
35 
36  AmiIoHandler(OverlappedAmiPtr overlappedPtr, const AsioErrorCode & ec);
37 
38  void operator()();
39 
40  void operator()(
41  const AsioErrorCode & ec);
42 
43  void operator()(
44  const AsioErrorCode & ec,
45  std::size_t bytesTransferred);
46 
47  OverlappedAmiPtr mOverlappedPtr;
48  std::size_t mIndex;
49 
50  AsioErrorCode mEc;
51  };
52 
53  class AmiTimerHandler
54  {
55  public:
56 
57  AmiTimerHandler(OverlappedAmiPtr overlappedPtr);
58 
59  void operator()(const AsioErrorCode & ec);
60 
61  OverlappedAmiPtr mOverlappedPtr;
62  std::size_t mIndex;
63  };
64 
65  void * asio_handler_allocate(std::size_t size, AmiIoHandler * pHandler);
66  void asio_handler_deallocate(void * pointer, std::size_t size, AmiIoHandler * pHandler);
67  void * asio_handler_allocate(std::size_t size, AmiTimerHandler * pHandler);
68  void asio_handler_deallocate(void * pointer, std::size_t size, AmiTimerHandler * pHandler);
69 
70 } // namespace RCF
71 
72 #endif // ! INCLUDE_RCF_AMIIOHANDLER_HPP
Definition: AmiIoHandler.hpp:24