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

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

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

319  {
320  field_definitions_map_[fd.get_name()] = fd;
321  }

◆ get_class_id()

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

Definition at line 351 of file serialization.cpp.

351  {
352  return class_id_;
353  }

◆ get_factory_id()

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

Definition at line 347 of file serialization.cpp.

347  {
348  return factory_id_;
349  }

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

323  {
324  auto it = field_definitions_map_.find(name);
325  if (it != field_definitions_map_.end()) {
326  return it->second;
327  }
328  BOOST_THROW_EXCEPTION(exception::hazelcast_serialization("ClassDefinition::getField",
329  (boost::format("Invalid field name: '%1%' for ClassDefinition {id: %2%, version: %3%}")
330  %name %class_id_ %version_).str()));
331  }

◆ get_field_count()

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

Definition at line 342 of file serialization.cpp.

342  {
343  return (int) field_definitions_map_.size();
344  }

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

337  {
338  FieldDefinition const &fd = get_field(field_name);
339  return fd.get_type();
340  }
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 355 of file serialization.cpp.

355  {
356  return version_;
357  }

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

333  {
334  return field_definitions_map_.find(field_name) != field_definitions_map_.end();
335  }

◆ read_data()

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

Internal API.

Parameters
dataInput

Definition at line 375 of file serialization.cpp.

375  {
376  factory_id_ = data_input.read<int32_t>();
377  class_id_ = data_input.read<int32_t>();
378  version_ = data_input.read<int32_t>();
379  int size = data_input.read<int16_t>();
380  for (int i = 0; i < size; i++) {
381  FieldDefinition fieldDefinition;
382  fieldDefinition.read_data(data_input);
383  add_field_def(fieldDefinition);
384  }
385  }
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 359 of file serialization.cpp.

359  {
360  if (get_version() < 0) {
361  this->version_ = new_version;
362  }
363  }

◆ write_data()

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

Internal API.

Parameters
dataOutput

Definition at line 365 of file serialization.cpp.

365  {
366  data_output.write<int32_t>(factory_id_);
367  data_output.write<int32_t>(class_id_);
368  data_output.write<int32_t>(version_);
369  data_output.write<int16_t>(field_definitions_map_.size());
370  for (auto &entry : field_definitions_map_) {
371  entry.second.write_data(data_output);
372  }
373  }

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