1#if PROTOCOL_VERSION > 763
14 static constexpr std::string_view
packet_name =
"Custom Payload (Configuration)";
20 if (parsed !=
nullptr)
22 unsigned long long int data_size =
static_cast<unsigned long long int>(length);
23 const unsigned char* data_ptr = &(*iter);
24 parsed->Read(data_ptr, data_size);
25 iter += length - data_size;
26 length =
static_cast<size_t>(data_size);
34 if (parsed ==
nullptr)
38 unsigned long long int serialized_length = 0;
39 const unsigned char* serialized = parsed->Write(serialized_length);
40 WriteByteArray(serialized,
static_cast<size_t>(serialized_length), container);
43 std::optional<Json::Value>
SerializeParsed(
const std::shared_ptr<PluginObject>& parsed)
const
45 if (parsed ==
nullptr)
void WriteParsed(const std::shared_ptr< PluginObject > &parsed, WriteContainer &container) const
SERIALIZED_FIELD(Identifier, std::string)
std::shared_ptr< PluginObject > ReadParsed(ReadIterator &iter, size_t &length) const
DEFINE_CONDITION(ParsedDataNull, GetParsedData()==nullptr)
DECLARE_READ_WRITE_SERIALIZE
static constexpr std::string_view packet_name
std::optional< Json::Value > SerializeParsed(const std::shared_ptr< PluginObject > &parsed) const
SERIALIZED_FIELD(RawData, Internal::Conditioned< Internal::Vector< unsigned char, void, 0 >, &THIS::ParsedDataNull >)
SERIALIZED_FIELD(ParsedData, Internal::CustomType< std::shared_ptr< PluginObject >, &THIS::ReadParsed, &THIS::WriteParsed, &THIS::SerializeParsed >)
Value Parse(std::string_view::const_iterator iter, size_t length, bool no_except=false)
Parse a string_view from iter for at most length characters.
std::shared_ptr< PluginObject > CreateObjectFromPlugin(const char *identifier)
Create an abstract PluginObject using a runtime loaded plugin (dll/so)
std::vector< unsigned char > WriteContainer
std::vector< unsigned char >::const_iterator ReadIterator
void WriteByteArray(const std::vector< unsigned char > &my_array, WriteContainer &container)
A type wrapper to conditionally serialize a type.