Hazelcast C++ Client
Hazelcast C++ Client Library
Loading...
Searching...
No Matches
hazelcast::client::serialization::ClassDefinition Class Reference

Public Member Functions

 ClassDefinition ()
 Constructor.
 ClassDefinition (int factory_id, int class_id, int version)
 Constructor.
void add_field_def (FieldDefinition &field_definition)
 Internal API.
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.
void write_data (pimpl::data_output &data_output)
 Internal API.
void read_data (object_data_input &data_input)
 Internal API.
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 582 of file serialization.h.

Constructor & Destructor Documentation

◆ ClassDefinition() [1/2]

hazelcast::client::serialization::ClassDefinition::ClassDefinition ( )

Constructor.

Definition at line 437 of file serialization.cpp.

438 : factory_id_(0)
439 , class_id_(0)
440 , version_(-1)
441 , binary_(new std::vector<byte>)
442{}

◆ ClassDefinition() [2/2]

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}

◆ operator!=()

bool hazelcast::client::serialization::ClassDefinition::operator!= ( const ClassDefinition & rhs) const

Definition at line 553 of file serialization.cpp.

554{
555 return !(rhs == *this);
556}

◆ operator==()

bool hazelcast::client::serialization::ClassDefinition::operator== ( const ClassDefinition & rhs) const

Definition at line 545 of file serialization.cpp.

546{
547 return factory_id_ == rhs.factory_id_ && class_id_ == rhs.class_id_ &&
548 version_ == rhs.version_ &&
549 field_definitions_map_ == rhs.field_definitions_map_;
550}

◆ 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}

◆ operator<<

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

Definition at line 558 of file serialization.cpp.

560{
561 os << "ClassDefinition{"
562 << "factoryId: " << definition.factory_id_
563 << " classId: " << definition.class_id_
564 << " version: " << definition.version_ << " fieldDefinitions: {";
565
566 for (auto& entry : definition.field_definitions_map_) {
567 os << entry.second;
568 }
569 os << "} }";
570 return os;
571}

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