Libftpp
A modern C++ library
message.hpp
Go to the documentation of this file.
1 #ifndef MESSAGE_HPP
2 #define MESSAGE_HPP
3 
4 #include <stddef.h>
5 #include <string.h>
6 
7 #include <stdexcept>
8 #include <string>
9 #include <vector>
10 
11 #include "../../data_structures/data_buffer/data_buffer.hpp"
12 
46 class Message
47 {
48 public:
49  using Type = int;
50 
51 private:
52  int _fd;
53  Type _type;
54  DataBuffer _buffer;
55 
56 public:
57  Message(Type type);
58  Message(int fd, Type type) : _fd(fd), _type(type) {}
59  Message() : _fd(-1), _type(0) {}
60 
61  template <typename T>
62  const Message& operator>>(T& value) const
63  {
64  _buffer >> value;
65  return *this;
66  }
67 
68  template <typename T>
69  Message& operator<<(const T& value)
70  {
71  _buffer << value;
72  return *this;
73  }
74 
75  void appendBytes(const unsigned char* data, size_t len);
76  std::vector<unsigned char> getSerializedData() const;
77 
79  Message::Type type() const;
80 
82 
83  void setMessageFd(int fd);
84 
85  void incr_cursor(size_t len) const;
86  void decr_cursor(size_t len) const;
87 
88  bool isComplet();
89  void reset();
90 
91  const int& getFd() const;
92 };
93 #endif
A simple LIFO data buffer for serialization and deserialization for simple data types and std::string...
Definition: data_buffer.hpp:37
Class representing a structured message for network communication.
Definition: message.hpp:47
void setType(Message::Type type)
Definition: message.cpp:58
Message()
Definition: message.hpp:59
void reset()
Definition: message.cpp:48
std::vector< unsigned char > getSerializedData() const
Definition: message.cpp:26
void decr_cursor(size_t len) const
Definition: message.cpp:74
void setMessageFd(int fd)
Definition: message.cpp:64
bool isComplet()
Definition: message.cpp:10
Message::Type type() const
Definition: message.cpp:53
const Message & operator>>(T &value) const
Definition: message.hpp:62
void appendBytes(const unsigned char *data, size_t len)
Definition: message.cpp:5
void incr_cursor(size_t len) const
Definition: message.cpp:69
const int & getFd() const
Definition: message.cpp:79
Message(int fd, Type type)
Definition: message.hpp:58
int Type
Definition: message.hpp:49
Message & operator<<(const T &value)
Definition: message.hpp:69
DataBuffer * getBuffer()
Definition: message.cpp:84