AppChat  0.5.0
TCP client-server caht application with boost::asio library.
control_request.h
1 #ifndef CONTROL_REQUEST_H
2 #define CONTROL_REQUEST_H
3 
4 #include "request.h"
5 
6 class ControlRequest : public Request {
7 public:
9  std::memcpy(header, &PROTOCOL_VERS, Block::VersionProtocol);
10  }
11  virtual const void* get_data() const override { return __data; }
12  virtual void* get_data() override { return __data; }
13 
14  virtual identifier_t get_roomid() const {
22  identifier_t roomid;
23  std::memcpy(&roomid, __data, sizeof(identifier_t));
24  return roomid;
25  }
26 
27  virtual uint32_t get_length_data() const override { return LengthRequest;}
28 
29 protected:
30  static constexpr auto LengthRequest = Block::RoomId;
31  char __data[LengthRequest];
32 };
33 
35 public:
36  JoinRoomRequest(identifier_t roomid=0) {
37  std::memcpy(header+Block::VersionProtocol, &type_request, Block::VersionProtocol);
38  std::memcpy(__data, &roomid, Block::RoomId);
39  }
40 
41  JoinRoomRequest(request_ptr request) {
42  std::memcpy(header, request->get_header(), Block::Header);
43  std::memcpy(header+Block::VersionProtocol, &type_request, Block::VersionProtocol);
44  }
45 private:
46  const TypeCommand type_request = TypeCommand::JoinRoomRequest;
47 };
48 
49 using join_room_request_ptr = std::shared_ptr<JoinRoomRequest>;
50 #endif // CONTROL_REQUEST_H
Definition: request.h:7
Definition: control_request.h:6
Definition: control_request.h:34
virtual identifier_t get_roomid() const
Definition: control_request.h:14