SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
PreadSync.h
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 #ifndef swcdb_fs_Broker_Protocol_req_PreadSync_h
7 #define swcdb_fs_Broker_Protocol_req_PreadSync_h
8 
11 
12 
13 namespace SWC { namespace Comm { namespace Protocol {
14 namespace FsBroker { namespace Req {
15 
16 
17 class PreadSync final : public BaseSync, public Base {
18  public:
19  typedef std::shared_ptr<PreadSync> Ptr;
20 
21  void* buffer;
22  bool allocated;
23  size_t amount;
24 
27  uint32_t timeout, FS::SmartFd::Ptr& a_smartfd,
28  uint64_t offset, void* dst, size_t len, bool a_allocated)
29  : Base(
30  stats, FS::Statistics::PREAD_SYNC,
31  Buffers::make(
32  Params::PreadReq(a_smartfd->fd(), offset, len),
33  0,
34  FUNCTION_PREAD, timeout
35  )
36  ),
37  buffer(dst), allocated(a_allocated), amount(0),
38  smartfd(a_smartfd) {
39  }
40 
41  PreadSync(PreadSync&&) = delete;
42  PreadSync(const PreadSync&) = delete;
44  PreadSync& operator=(const PreadSync&) = delete;
45 
46  ~PreadSync() noexcept { }
47 
48  void handle(ConnHandlerPtr, const Event::Ptr& ev) override {
50  if(amount) {
51  if(allocated) {
52  memcpy(buffer, ev->data_ext.base, amount);
53  } else {
54  static_cast<StaticBuffer*>(buffer)->set(ev->data_ext);
55  }
56  }
58  }
59 
60  private:
62 
63 };
64 
65 
66 }}}}}
67 
68 
69 #endif // swcdb_fs_Broker_Protocol_req_PreadSync_h
SWC::Comm::Protocol::FsBroker::FUNCTION_PREAD
@ FUNCTION_PREAD
Pread.
Definition: Commands.h:35
SWC::Comm::Protocol::FsBroker::Req::PreadSync::allocated
bool allocated
Definition: PreadSync.h:22
SWC::Comm::Protocol::FsBroker::Req::PreadSync::buffer
void * buffer
Definition: PreadSync.h:21
SWC::Comm::Protocol::FsBroker::Req::PreadSync::operator=
PreadSync & operator=(PreadSync &&)=delete
SWC::Comm::Protocol::FsBroker::Req::PreadSync
Definition: PreadSync.h:17
SWC::Comm::Protocol::FsBroker::Req::PreadSync::operator=
PreadSync & operator=(const PreadSync &)=delete
SWC::Comm::Protocol::FsBroker::Req::PreadSync::PreadSync
SWC_CAN_INLINE PreadSync(FS::Statistics &stats, uint32_t timeout, FS::SmartFd::Ptr &a_smartfd, uint64_t offset, void *dst, size_t len, bool a_allocated)
Definition: PreadSync.h:26
SWC::Comm::Protocol::FsBroker::Req::Base::handle_pread
void handle_pread(const Event::Ptr &ev, FS::SmartFd::Ptr &smartfd, size_t &amount)
Definition: Base.cc:204
SWC::Comm::Protocol::FsBroker::Req::PreadSync::PreadSync
PreadSync(const PreadSync &)=delete
SWC::Comm::Protocol::FsBroker::Req::BaseSync
Definition: BaseSync.h:17
Base.h
Pread.h
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Core::Buffer
Definition: Buffer.h:18
SWC::Comm::Protocol::FsBroker::Req::PreadSync::smartfd
FS::SmartFd::Ptr & smartfd
Definition: PreadSync.h:61
SWC::Comm::Protocol::FsBroker::Req::PreadSync::PreadSync
PreadSync(PreadSync &&)=delete
SWC::Comm::Buffers
Definition: Buffers.h:20
SWC::Comm::ConnHandlerPtr
std::shared_ptr< ConnHandler > ConnHandlerPtr
Definition: AppContext.h:17
set
void set(uint64_t cmd=0, uint32_t timeout=0) noexcept
Definition: Header.h:33
SWC::FS::SmartFd::Ptr
std::shared_ptr< SmartFd > Ptr
Definition: SmartFd.h:37
SWC::Comm::Protocol::FsBroker::Req::PreadSync::amount
size_t amount
Definition: PreadSync.h:23
SWC::FS::Statistics
Definition: Statistics.h:18
SWC::Core::StateSynchronization::acknowledge
SWC_CAN_INLINE void acknowledge() noexcept
Definition: StateSynchronization.h:31
SWC::Comm::Event::Ptr
std::shared_ptr< Event > Ptr
Definition: Event.h:33
SWC::Comm::Protocol::FsBroker::Req::PreadSync::handle
void handle(ConnHandlerPtr, const Event::Ptr &ev) override
Definition: PreadSync.h:48
SWC::Comm::Protocol::FsBroker::Req::Base
Definition: Base.h:17
SWC::Comm::Protocol::FsBroker::Req::PreadSync::Ptr
std::shared_ptr< PreadSync > Ptr
Definition: PreadSync.h:19
SWC::Comm::Protocol::FsBroker::Req::PreadSync::~PreadSync
~PreadSync() noexcept
Definition: PreadSync.h:46