Libftpp
A modern C++ library
Message Class Reference

Class representing a structured message for network communication. More...

#include <message.hpp>

Public Types

using Type = int
 

Public Member Functions

 Message (Type type)
 
 Message (int fd, Type type)
 
 Message ()
 
template<typename T >
const Messageoperator>> (T &value) const
 
template<typename T >
Messageoperator<< (const T &value)
 
void appendBytes (const unsigned char *data, size_t len)
 
std::vector< unsigned char > getSerializedData () const
 
void setType (Message::Type type)
 
Message::Type type () const
 
DataBuffergetBuffer ()
 
void setMessageFd (int fd)
 
void incr_cursor (size_t len) const
 
void decr_cursor (size_t len) const
 
bool isComplet ()
 
void reset ()
 
const int & getFd () const
 

Detailed Description

Class representing a structured message for network communication.

This class provides a convenient way to handle structured messages in network protocols. It uses a DataBuffer internally to store message data and supports serialization for network transmission.

Note
Uses a DataBuffer to store message data efficiently
The transfer format is: [type (int)][size (size_t)][data (variable)]
During usage, the buffer contains only the data (without type), and the Message::Type is stored separately in _type
Supports stream operators (<<, >>) for easy data insertion and extraction
// Create a message with a specific type
Message msg(1001);
// Add data using stream operators
msg << std::string("Hello") << 42 << 3.14f;
// Serialize for network transmission
auto serialized = msg.getSerializedData();
// Extract data (order matters!)
std::string text;
int number;
float value;
msg >> text >> number >> value;
Class representing a structured message for network communication.
Definition: message.hpp:47
Exceptions
std::runtime_erroron serialization/deserialization errors
See also
DataBuffer for underlying data storage mechanism

Definition at line 46 of file message.hpp.

Member Typedef Documentation

◆ Type

using Message::Type = int

Definition at line 49 of file message.hpp.

Constructor & Destructor Documentation

◆ Message() [1/3]

Message::Message ( Message::Type  type)

Definition at line 3 of file message.cpp.

◆ Message() [2/3]

Message::Message ( int  fd,
Type  type 
)
inline

Definition at line 58 of file message.hpp.

◆ Message() [3/3]

Message::Message ( )
inline

Definition at line 59 of file message.hpp.

Member Function Documentation

◆ appendBytes()

void Message::appendBytes ( const unsigned char *  data,
size_t  len 
)

Definition at line 5 of file message.cpp.

References DataBuffer::append().

◆ decr_cursor()

void Message::decr_cursor ( size_t  len) const

Definition at line 74 of file message.cpp.

References DataBuffer::decreaseCursor().

◆ getBuffer()

DataBuffer * Message::getBuffer ( )

Definition at line 84 of file message.cpp.

◆ getFd()

const int & Message::getFd ( ) const

Definition at line 79 of file message.cpp.

◆ getSerializedData()

std::vector< unsigned char > Message::getSerializedData ( ) const

Definition at line 26 of file message.cpp.

References DataBuffer::data(), and DataBuffer::size().

Referenced by Client::send(), and Server::sendTo().

◆ incr_cursor()

void Message::incr_cursor ( size_t  len) const

Definition at line 69 of file message.cpp.

References DataBuffer::increaseCursor().

◆ isComplet()

bool Message::isComplet ( )

Definition at line 10 of file message.cpp.

References DataBuffer::decreaseCursor(), DataBuffer::size(), and type().

◆ operator<<()

template<typename T >
Message& Message::operator<< ( const T &  value)
inline

Definition at line 69 of file message.hpp.

◆ operator>>()

template<typename T >
const Message& Message::operator>> ( T &  value) const
inline

Definition at line 62 of file message.hpp.

◆ reset()

void Message::reset ( )

Definition at line 48 of file message.cpp.

References DataBuffer::reset().

◆ setMessageFd()

void Message::setMessageFd ( int  fd)

Definition at line 64 of file message.cpp.

◆ setType()

void Message::setType ( Message::Type  type)

Definition at line 58 of file message.cpp.

References type().

◆ type()

Message::Type Message::type ( ) const

Definition at line 53 of file message.cpp.

Referenced by isComplet(), and setType().