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 581 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 444 of file serialization.cpp.

445  : factory_id_(factory_id)
446  , class_id_(class_id)
447  , version_(version)
448  , binary_(new std::vector<byte>)
449 {}

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 452 of file serialization.cpp.

453 {
454  field_definitions_map_[fd.get_name()] = fd;
455 }

◆ get_class_id()

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

Definition at line 499 of file serialization.cpp.

500 {
501  return class_id_;
502 }

◆ get_factory_id()

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

Definition at line 493 of file serialization.cpp.

494 {
495  return factory_id_;
496 }

◆ 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 458 of file serialization.cpp.

459 {
460  auto it = field_definitions_map_.find(name);
461  if (it != field_definitions_map_.end()) {
462  return it->second;
463  }
464  BOOST_THROW_EXCEPTION(exception::hazelcast_serialization(
465  "ClassDefinition::getField",
466  (boost::format("Invalid field name: '%1%' for ClassDefinition {id: %2%, "
467  "version: %3%}") %
468  name % class_id_ % version_)
469  .str()));
470 }

◆ get_field_count()

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

Definition at line 487 of file serialization.cpp.

488 {
489  return (int)field_definitions_map_.size();
490 }

◆ 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 480 of file serialization.cpp.

481 {
482  FieldDefinition const& fd = get_field(field_name);
483  return fd.get_type();
484 }
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 505 of file serialization.cpp.

506 {
507  return version_;
508 }

◆ 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 473 of file serialization.cpp.

474 {
475  return field_definitions_map_.find(field_name) !=
476  field_definitions_map_.end();
477 }

◆ read_data()

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

Internal API.

Parameters
dataInput

Definition at line 531 of file serialization.cpp.

532 {
533  factory_id_ = data_input.read<int32_t>();
534  class_id_ = data_input.read<int32_t>();
535  version_ = data_input.read<int32_t>();
536  int size = data_input.read<int16_t>();
537  for (int i = 0; i < size; i++) {
538  FieldDefinition fieldDefinition;
539  fieldDefinition.read_data(data_input);
540  add_field_def(fieldDefinition);
541  }
542 }
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 511 of file serialization.cpp.

512 {
513  if (get_version() < 0) {
514  this->version_ = new_version;
515  }
516 }

◆ write_data()

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

Internal API.

Parameters
dataOutput

Definition at line 519 of file serialization.cpp.

520 {
521  data_output.write<int32_t>(factory_id_);
522  data_output.write<int32_t>(class_id_);
523  data_output.write<int32_t>(version_);
524  data_output.write<int16_t>(field_definitions_map_.size());
525  for (auto& entry : field_definitions_map_) {
526  entry.second.write_data(data_output);
527  }
528 }

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