AppChat  0.5.0
TCP client-server caht application with boost::asio library.
request.h
1 #ifndef IREQUEST_H
2 #define IREQUEST_H
3 
4 #include <memory>
5 #include "protocol/command_table.h"
6 
7 class Request : public IPacket {
8 public:
9  Request() {
10  std::memcpy(header, &PROTOCOL_VERS, Block::VersionProtocol);
11 
12  DateTime datetime(boost::posix_time::second_clock::universal_time());
13 
14  std::memcpy(header + Block::VersionProtocol + Block::Command, &datetime, Block::Datetime);
15  }
16 
17  virtual const void* get_header() const override { return header; }
18  virtual void* get_header() override { return header; }
19  virtual const void* get_data() const override { return nullptr; }
20  virtual void* get_data() override { return nullptr; }
21 
22  virtual uint16_t get_protocol_version() const override { return *(uint16_t*)header; }
23 
24  virtual TypeCommand get_type() const override { return TypeCommand::Unknown; }
25  virtual TypeCommand get_type_data() const override { return *(TypeCommand*)(header + Block::VersionProtocol) ; }
26 
27  virtual DateTime get_datetime() const override
28  {
29  DateTime dt;
30  std::memcpy(&dt, header + Block::VersionProtocol + Block::Command, Block::Datetime);
31  return dt;
32  }
33 
34  virtual uint32_t get_length_data() const override { return 0; }
35 
36 protected:
37  char header[Block::Header];
38 };
39 
40 using request_ptr = std::shared_ptr<Request>;
41 
42 #endif // IREQUEST_H
Definition: request.h:7
Definition: datetime.h:6
Definition: command_table.h:73