MySQL 9.0.0
Source Code Documentation
Group_service_message Class Reference

#include <group_service_message.h>

Inheritance diagram for Group_service_message:
[legend]

Public Types

enum  enum_payload_item_type {
  PIT_UNKNOWN = 0 , PIT_TAG = 1 , PIT_DATA = 2 , PIT_SENT_TIMESTAMP = 3 ,
  PIT_MAX = 4
}
 
- Public Types inherited from Plugin_gcs_message
enum  enum_cargo_type {
  CT_UNKNOWN = 0 , CT_CERTIFICATION_MESSAGE = 1 , CT_TRANSACTION_MESSAGE = 2 , CT_RECOVERY_MESSAGE = 3 ,
  CT_MEMBER_INFO_MESSAGE = 4 , CT_MEMBER_INFO_MANAGER_MESSAGE = 5 , CT_PIPELINE_STATS_MEMBER_MESSAGE = 6 , CT_SINGLE_PRIMARY_MESSAGE = 7 ,
  CT_GROUP_ACTION_MESSAGE = 8 , CT_GROUP_VALIDATION_MESSAGE = 9 , CT_SYNC_BEFORE_EXECUTION_MESSAGE = 10 , CT_TRANSACTION_WITH_GUARANTEE_MESSAGE = 11 ,
  CT_TRANSACTION_PREPARED_MESSAGE = 12 , CT_MESSAGE_SERVICE_MESSAGE = 13 , CT_RECOVERY_METADATA_MESSAGE = 14 , CT_MAX = 15
}
 The different cargo type codes. More...
 

Public Member Functions

 Group_service_message ()
 Group service message constructor. More...
 
 Group_service_message (const uchar *buf, size_t len)
 Group service message constructor for raw data. More...
 
 ~Group_service_message () override
 Group service message destructor. More...
 
bool set_data (const uchar *data, const size_t data_length)
 Set data to message that will be transmitted to group members. More...
 
const ucharget_data ()
 Return data on message. More...
 
size_t get_data_length ()
 Return the length of the data on message. More...
 
bool set_tag (const char *tag)
 Set the tag that identifies the message. More...
 
const std::string & get_tag ()
 Return the tag that identifies the message. More...
 
size_t get_tag_length ()
 Return the length of the tag that identifies the message. More...
 
- Public Member Functions inherited from Plugin_gcs_message
virtual ~Plugin_gcs_message ()=default
 
int get_version ()
 
unsigned short get_header_length ()
 
enum_cargo_type get_cargo_type () const
 
unsigned long long get_msg_length ()
 
void encode (std::vector< unsigned char > *buffer) const
 Encodes the contents of this instance into the buffer. More...
 
void decode (const unsigned char *buffer, size_t length)
 Decodes the contents of the buffer and sets the field values according to the values decoded. More...
 

Static Public Member Functions

static uint64_t get_sent_timestamp (const unsigned char *buffer, size_t length)
 Return the time at which the message contained in the buffer was sent. More...
 
- Static Public Member Functions inherited from Plugin_gcs_message
static enum_cargo_type get_cargo_type (const unsigned char *buffer)
 Return the cargo type of a given message buffer, without decode the complete message. More...
 
static void get_first_payload_item_raw_data (const unsigned char *buffer, const unsigned char **payload_item_data, size_t *payload_item_length)
 Return the raw data of the first payload item of a given message buffer, without decode the complete message. More...
 
static bool get_payload_item_type_raw_data (const unsigned char *buffer, const unsigned char *end, uint16 payload_item_type, const unsigned char **payload_item_data, unsigned long long *payload_item_length)
 Return the raw data of the payload item of a given payload type of a given message buffer. More...
 

Protected Member Functions

void encode_payload (std::vector< unsigned char > *buffer) const override
 Encodes the group service message contents for transmission. More...
 
void decode_payload (const unsigned char *buffer, const unsigned char *) override
 Group service message decoding method. More...
 
- Protected Member Functions inherited from Plugin_gcs_message
 Plugin_gcs_message (enum_cargo_type cargo_type)
 Plugin_gcs_message constructor. More...
 
void encode_header (std::vector< unsigned char > *buffer) const
 Encodes the header of this instance into the buffer. More...
 
void decode_header (const unsigned char **slider)
 Decodes the header of the buffer into this instance. More...
 
void encode_payload_item_type_and_length (std::vector< unsigned char > *buffer, uint16 payload_item_type, unsigned long long payload_item_length) const
 Encodes the given payload item type and length into the buffer. More...
 
void encode_payload_item_char (std::vector< unsigned char > *buffer, uint16 type, unsigned char value) const
 Encodes the given payload item (type, length and value) into the buffer as a char (1 byte). More...
 
void encode_payload_item_int2 (std::vector< unsigned char > *buffer, uint16 type, uint16 value) const
 Encodes the given payload item (type, length and value) into the buffer as a 2 bytes integer. More...
 
void decode_payload_item_int2 (const unsigned char **buffer, uint16 *type, uint16 *value)
 Decodes the given payload item (type, length and value) from the buffer as a 2 bytes integer. More...
 
void encode_payload_item_int4 (std::vector< unsigned char > *buffer, uint16 type, uint32 value) const
 Encodes the given payload item (type, length and value) into the buffer as a 4 bytes integer. More...
 
void decode_payload_item_int4 (const unsigned char **buffer, uint16 *type, uint32 *value)
 Decodes the given payload item (type, length and value) from the buffer as a 4 bytes integer. More...
 
void encode_payload_item_int8 (std::vector< unsigned char > *buffer, uint16 type, ulonglong value) const
 Encodes the given payload item (type, length and value) into the buffer as a 8 bytes integer. More...
 
void encode_payload_item_string (std::vector< unsigned char > *buffer, uint16 type, const char *value, unsigned long long length) const
 Encodes the given payload item (type, length and value) into the buffer as a char array (variable size). More...
 
void decode_payload_item_string (const unsigned char **buffer, uint16 *type, std::string *value, unsigned long long *length)
 Decodes the given payload item (type, length and value) from the buffer as a char array (variable size). More...
 
void encode_payload_item_bytes (std::vector< unsigned char > *buffer, uint16 type, const unsigned char *value, unsigned long long length) const
 Encodes the given payload item (type, length and value) into the buffer as a byte buffer (variable size). More...
 
void decode_payload_item_bytes (const unsigned char **buffer, uint16 *type, unsigned char *value, unsigned long long *length)
 Decodes the given payload item (type, length and value) from the buffer as a byte buffer (variable size). More...
 

Private Attributes

std::string m_tag
 The message identifier. More...
 
std::vector< uchar, Malloc_allocator< uchar > > m_data
 The message data. More...
 
const unsigned char * m_data_pointer
 A pointer to the message data, memory ownership belongs to the message creator. More...
 
size_t m_data_pointer_length
 

Additional Inherited Members

- Static Public Attributes inherited from Plugin_gcs_message
static const int PLUGIN_GCS_MESSAGE_VERSION = 1
 The protocol version number. More...
 
static const unsigned int WIRE_VERSION_SIZE = 4
 The protocol version number. More...
 
static const unsigned int WIRE_HD_LEN_SIZE = 2
 The on-the-wire size of the header length field. More...
 
static const unsigned int WIRE_MSG_LEN_SIZE = 8
 The on-the-wire size of the message size field. More...
 
static const unsigned int WIRE_CARGO_TYPE_SIZE = 2
 The on-the-wire size of the cargo type field. More...
 
static const unsigned int WIRE_FIXED_HEADER_SIZE
 The on-the-wire size of the fixed header. More...
 
static const unsigned int WIRE_PAYLOAD_ITEM_TYPE_SIZE = 2
 The on-the-wire size of the each payload item type field. More...
 
static const unsigned int WIRE_PAYLOAD_ITEM_LEN_SIZE = 8
 The on-the-wire size of the each payload item size field. More...
 
static const unsigned int WIRE_PAYLOAD_ITEM_HEADER_SIZE
 The on-the-wire size of the payload item header. More...
 
- Static Protected Member Functions inherited from Plugin_gcs_message
static int64_t get_sent_timestamp (const unsigned char *buffer, size_t length, const uint16 timestamp_payload_item_type)
 Return the time at which the message contained in the buffer was sent. More...
 
static void decode_payload_item_type_and_length (const unsigned char **buffer, uint16 *payload_item_type, unsigned long long *payload_item_length)
 Decodes the given payload item type and length from the buffer. More...
 
static void decode_payload_item_char (const unsigned char **buffer, uint16 *type, unsigned char *value)
 Decodes the given payload item (type, length and value) from the buffer as a char (1 byte). More...
 
static void decode_payload_item_int8 (const unsigned char **buffer, uint16 *type, uint64 *value)
 Decodes the given payload item (type, length and value) from the buffer as a 8 bytes integer. More...
 

Member Enumeration Documentation

◆ enum_payload_item_type

Enumerator
PIT_UNKNOWN 
PIT_TAG 
PIT_DATA 
PIT_SENT_TIMESTAMP 
PIT_MAX 

Constructor & Destructor Documentation

◆ Group_service_message() [1/2]

Group_service_message::Group_service_message ( )

Group service message constructor.

◆ Group_service_message() [2/2]

Group_service_message::Group_service_message ( const uchar buf,
size_t  len 
)

Group service message constructor for raw data.

Parameters
[in]bufraw data
[in]lenraw length

◆ ~Group_service_message()

Group_service_message::~Group_service_message ( )
overridedefault

Group service message destructor.

Member Function Documentation

◆ decode_payload()

void Group_service_message::decode_payload ( const unsigned char *  buffer,
const unsigned char *   
)
overrideprotectedvirtual

Group service message decoding method.

Parameters
[in]bufferthe received data

Implements Plugin_gcs_message.

◆ encode_payload()

void Group_service_message::encode_payload ( std::vector< unsigned char > *  buffer) const
overrideprotectedvirtual

Encodes the group service message contents for transmission.

Parameters
[out]bufferthe message buffer to be written

Implements Plugin_gcs_message.

◆ get_data()

const uchar * Group_service_message::get_data ( )

Return data on message.

Returns
content of the message

◆ get_data_length()

size_t Group_service_message::get_data_length ( )

Return the length of the data on message.

Returns
length of the content of the message

◆ get_sent_timestamp()

uint64_t Group_service_message::get_sent_timestamp ( const unsigned char *  buffer,
size_t  length 
)
static

Return the time at which the message contained in the buffer was sent.

See also
Metrics_handler::get_current_time()
Parameters
[in]bufferthe buffer to decode from.
[in]lengththe buffer length
Returns
the time on which the message was sent.

◆ get_tag()

const std::string & Group_service_message::get_tag ( )
inline

Return the tag that identifies the message.

Returns
const string that identifies content of message

◆ get_tag_length()

size_t Group_service_message::get_tag_length ( )
inline

Return the length of the tag that identifies the message.

Returns
length of the string that identifies content of message

◆ set_data()

bool Group_service_message::set_data ( const uchar data,
const size_t  data_length 
)

Set data to message that will be transmitted to group members.

Memory ownership belongs to the message creator.

Parameters
[in]datawhere the data will be read
[in]data_lengththe length of the data to write
Returns
returns false if succeeds, otherwise true is returned.

◆ set_tag()

bool Group_service_message::set_tag ( const char *  tag)

Set the tag that identifies the message.

Parameters
[in]tagtag name identify message
Returns
returns false if succeeds, otherwise tag is invalid and true shall returned

Member Data Documentation

◆ m_data

std::vector<uchar, Malloc_allocator<uchar> > Group_service_message::m_data
private

The message data.

◆ m_data_pointer

const unsigned char* Group_service_message::m_data_pointer
private

A pointer to the message data, memory ownership belongs to the message creator.

◆ m_data_pointer_length

size_t Group_service_message::m_data_pointer_length
private

◆ m_tag

std::string Group_service_message::m_tag
private

The message identifier.


The documentation for this class was generated from the following files: