AppChat  0.5.0
TCP client-server caht application with boost::asio library.
input_request.h
1 #ifndef CONTROLREQUEST_H
2 #define CONTROLREQUEST_H
3 
4 #include "request.h"
5 
6 class InputRequest : 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 const char* get_login() const {
15  return __data;
16  }
17  virtual const char* get_password() const {
18  return __data+Block::LoginName;
19  }
20 
21  virtual uint32_t get_length_data() const override { return LengthRequest;}
22 
23 protected:
24  static constexpr auto LengthRequest = Block::LoginName + Block::Password;
25  char __data[LengthRequest];
26 };
27 
28 // *************************************************************************************************
34 public:
36  std::memcpy(header+Block::VersionProtocol, &type_request, Block::Command);
37  }
38 
39  RegistrationRequest(const std::string& login, const std::string& password):InputRequest() {
40  std::memcpy(header+Block::VersionProtocol, &type_request, Block::Command);
41  std::snprintf(__data, Block::LoginName, "%s", login.data());
42  std::snprintf(__data+Block::LoginName, Block::Password, "%s", password.data());
43  }
44 
45  RegistrationRequest(request_ptr req_ptr, const std::string& login, const std::string& password) {
46  std::memcpy(header, req_ptr->get_header(), Block::Header);
47 
48  std::snprintf(__data, Block::LoginName, "%s", login.data());
49  std::snprintf(__data+Block::LoginName, Block::Password, "%s", password.data());
50  }
51  RegistrationRequest(request_ptr req_ptr) {
52  std::memcpy(header, req_ptr->get_header(), Block::Header);
53  }
54 private:
55  const TypeCommand type_request = TypeCommand::RegistrationRequest;
56 };
57 
58 
60 public:
62  std::memcpy(header+Block::VersionProtocol, &type_request, Block::Command);
63  }
64  AutorisationRequest(const char* login, const char* password) {
65  std::memcpy(header+Block::VersionProtocol, &type_request, Block::Command);
66  std::snprintf(__data, Block::LoginName, "%s", login);
67  std::snprintf(__data+Block::LoginName, Block::Password, "%s", password);
68  }
69  AutorisationRequest(const std::string& login, const std::string& password) {
70  std::memcpy(header+Block::VersionProtocol, &type_request, Block::Command);
71  std::snprintf(__data, Block::LoginName, "%s", login.data());
72  std::snprintf(__data+Block::LoginName, Block::Password, "%s", password.data());
73  }
74 
75  AutorisationRequest(request_ptr req_ptr, const std::string& login, const std::string& password) {
76  std::memcpy(header, req_ptr->get_header(), Block::Header);
77 
78  std::snprintf(__data, Block::LoginName, "%s", login.data());
79  std::snprintf(__data+Block::LoginName, Block::Password, "%s", password.data());
80  }
81  AutorisationRequest(request_ptr req_ptr) {
82  std::memcpy(header, req_ptr->get_header(), Block::Header);
83  }
84 private:
85  const TypeCommand type_request = TypeCommand::AuthorisationRequest;
86 };
87 
88 
89 
90 // *************************************************************************************************
91 
92 using input_request_ptr = std::shared_ptr<InputRequest>;
93 using registr_request_ptr = std::shared_ptr<RegistrationRequest>;
94 using autor_request_ptr = std::shared_ptr<AutorisationRequest>;
95 
96 std::ostream& operator<<(std::ostream& os, const RegistrationRequest& request);
97 std::ostream& operator<<(std::ostream& os, const AutorisationRequest& request);
98 
99 std::ostream& operator<<(std::ostream& os, const InputRequest& request);
100 #endif // CONTROLREQUEST_H
Definition: request.h:7
Definition: input_request.h:6
Definition: input_request.h:59
The RegistrationRequest class.
Definition: input_request.h:33