Hazelcast C++ Client
Hazelcast C++ Client Library
hazelcast::client::serialization::ClassDefinition Class Reference

Public Member Functions

 ClassDefinition ()
 Constructor.
 
 ClassDefinition (int factory_id, int class_id, int version)
 Constructor. More...
 
void add_field_def (FieldDefinition &field_definition)
 Internal API. More...
 
bool has_field (const std::string &field_name) const
 
const FieldDefinitionget_field (const std::string &field_name) const
 
field_type get_field_type (const std::string &field_name) const
 
int get_field_count () const
 
int get_factory_id () const
 
int get_class_id () const
 
int get_version () const
 
void set_version_if_not_set (int new_version)
 Internal API. More...
 
void write_data (pimpl::data_output &data_output)
 Internal API. More...
 
void read_data (object_data_input &data_input)
 Internal API. More...
 
bool operator== (const ClassDefinition &rhs) const
 
bool operator!= (const ClassDefinition &rhs) const
 

Friends

std::ostream & operator<< (std::ostream &os, const ClassDefinition &definition)
 

Detailed Description

Definition at line 495 of file serialization.h.

Constructor & Destructor Documentation

◆ ClassDefinition()

hazelcast::client::serialization::ClassDefinition::ClassDefinition ( int  factory_id,
int  class_id,
int  version 
)

Constructor.

Parameters
factoryIdfactory id of class
classIdid of class
versionversion of portable class

Definition at line 299 of file serialization.cpp.

300  : factory_id_(factory_id), class_id_(class_id), version_(version), binary_(new std::vector<byte>) {
301  }

Member Function Documentation

◆ add_field_def()

void hazelcast::client::serialization::ClassDefinition::add_field_def ( FieldDefinition field_definition)

Internal API.

Parameters
fieldDefinitionto be added

Definition at line 303 of file serialization.cpp.

303  {
304  field_definitions_map_[fd.get_name()] = fd;
305  }

◆ get_class_id()

int hazelcast::client::serialization::ClassDefinition::get_class_id ( ) const
Returns
class id

Definition at line 335 of file serialization.cpp.

335  {
336  return class_id_;
337  }

◆ get_factory_id()

int hazelcast::client::serialization::ClassDefinition::get_factory_id ( ) const
Returns
factory id

Definition at line 331 of file serialization.cpp.

331  {
332  return factory_id_;
333  }

◆ get_field()

const FieldDefinition & hazelcast::client::serialization::ClassDefinition::get_field ( const std::string &  field_name) const
Parameters
fieldNamename of the field
Returns
field definition by given name
Exceptions
illegal_argumentwhen field not found

Definition at line 307 of file serialization.cpp.

307  {
308  auto it = field_definitions_map_.find(name);
309  if (it != field_definitions_map_.end()) {
310  return it->second;
311  }
312  BOOST_THROW_EXCEPTION(exception::hazelcast_serialization("ClassDefinition::getField",
313  (boost::format("Invalid field name: '%1%' for ClassDefinition {id: %2%, version: %3%}")
314  %name %class_id_ %version_).str()));
315  }

◆ get_field_count()

int hazelcast::client::serialization::ClassDefinition::get_field_count ( ) const
Returns
total field count

Definition at line 326 of file serialization.cpp.

326  {
327  return (int) field_definitions_map_.size();
328  }

◆ get_field_type()

field_type hazelcast::client::serialization::ClassDefinition::get_field_type ( const std::string &  field_name) const
Parameters
fieldNamename of the field
Returns
type of given field
Exceptions
illegal_argument_exception

Definition at line 321 of file serialization.cpp.

321  {
322  FieldDefinition const &fd = get_field(field_name);
323  return fd.get_type();
324  }
const FieldDefinition & get_field(const std::string &field_name) const

◆ get_version()

int hazelcast::client::serialization::ClassDefinition::get_version ( ) const
Returns
version

Definition at line 339 of file serialization.cpp.

339  {
340  return version_;
341  }

◆ has_field()

bool hazelcast::client::serialization::ClassDefinition::has_field ( const std::string &  field_name) const
Parameters
fieldNamefield name
Returns
true if this class definition contains a field named by given name

Definition at line 317 of file serialization.cpp.

317  {
318  return field_definitions_map_.find(field_name) != field_definitions_map_.end();
319  }

◆ read_data()

void hazelcast::client::serialization::ClassDefinition::read_data ( object_data_input data_input)

Internal API.

Parameters
dataInput

Definition at line 359 of file serialization.cpp.

359  {
360  factory_id_ = data_input.read<int32_t>();
361  class_id_ = data_input.read<int32_t>();
362  version_ = data_input.read<int32_t>();
363  int size = data_input.read<int16_t>();
364  for (int i = 0; i < size; i++) {
365  FieldDefinition fieldDefinition;
366  fieldDefinition.read_data(data_input);
367  add_field_def(fieldDefinition);
368  }
369  }
void add_field_def(FieldDefinition &field_definition)
Internal API.

◆ set_version_if_not_set()

void hazelcast::client::serialization::ClassDefinition::set_version_if_not_set ( int  new_version)

Internal API.

Parameters
newVersionportable version

Definition at line 343 of file serialization.cpp.

343  {
344  if (get_version() < 0) {
345  this->version_ = new_version;
346  }
347  }

◆ write_data()

void hazelcast::client::serialization::ClassDefinition::write_data ( pimpl::data_output &  data_output)

Internal API.

Parameters
dataOutput

Definition at line 349 of file serialization.cpp.

349  {
350  data_output.write<int32_t>(factory_id_);
351  data_output.write<int32_t>(class_id_);
352  data_output.write<int32_t>(version_);
353  data_output.write<int16_t>(field_definitions_map_.size());
354  for (auto &entry : field_definitions_map_) {
355  entry.second.write_data(data_output);
356  }
357  }

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