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

ClassDefinitionBuilder is used to build and register ClassDefinitions manually. More...

#include <serialization.h>

Public Member Functions

 ClassDefinitionBuilder (int factory_id, int class_id, int version)
ClassDefinitionBuilderadd_portable_field (const std::string &field_name, std::shared_ptr< ClassDefinition > def)
ClassDefinitionBuilderadd_portable_array_field (const std::string &field_name, std::shared_ptr< ClassDefinition > def)
ClassDefinitionBuilderadd_field (FieldDefinition &field_definition)
void add_field (const std::string &field_name, field_type const &field_type)
std::shared_ptr< ClassDefinitionbuild ()
int get_factory_id ()
int get_class_id ()
int get_version ()

Detailed Description

ClassDefinitionBuilder is used to build and register ClassDefinitions manually.

See also
ClassDefinition
SerializationConfig#addClassDefinition(ClassDefinition)

Definition at line 691 of file serialization.h.

Constructor & Destructor Documentation

◆ ClassDefinitionBuilder()

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

Definition at line 132 of file serialization.cpp.

135 : factory_id_(factory_id)
136 , class_id_(class_id)
137 , version_(version)
138 , index_(0)
139 , done_(false)
140{}

Member Function Documentation

◆ add_field() [1/2]

void hazelcast::client::serialization::ClassDefinitionBuilder::add_field ( const std::string & field_name,
field_type const & field_type )

Definition at line 231 of file serialization.cpp.

233{
234 check();
235 FieldDefinition fieldDefinition(index_++, field_name, field_type, version_);
236 field_definitions_.push_back(fieldDefinition);
237}

◆ add_field() [2/2]

ClassDefinitionBuilder & hazelcast::client::serialization::ClassDefinitionBuilder::add_field ( FieldDefinition & field_definition)

Definition at line 184 of file serialization.cpp.

185{
186 check();
187 int defIndex = field_definition.get_index();
188 if (index_ != defIndex) {
189 char buf[100];
190 util::hz_snprintf(buf,
191 100,
192 "Invalid field index. Index in definition:%d, being "
193 "added at index:%d",
194 defIndex,
195 index_);
196 BOOST_THROW_EXCEPTION(
197 exception::illegal_argument("ClassDefinitionBuilder::addField", buf));
198 }
199 index_++;
200 field_definitions_.push_back(field_definition);
201 return *this;
202}

◆ add_portable_array_field()

ClassDefinitionBuilder & hazelcast::client::serialization::ClassDefinitionBuilder::add_portable_array_field ( const std::string & field_name,
std::shared_ptr< ClassDefinition > def )

Definition at line 163 of file serialization.cpp.

166{
167 check();
168 if (def->get_class_id() == 0) {
169 BOOST_THROW_EXCEPTION(exception::illegal_argument(
170 "ClassDefinitionBuilder::addPortableField",
171 "Portable class id cannot be zero!"));
172 }
173 FieldDefinition fieldDefinition(index_++,
174 field_name,
175 field_type::TYPE_PORTABLE_ARRAY,
176 def->get_factory_id(),
177 def->get_class_id(),
178 def->get_version());
179 field_definitions_.push_back(fieldDefinition);
180 return *this;
181}

◆ add_portable_field()

ClassDefinitionBuilder & hazelcast::client::serialization::ClassDefinitionBuilder::add_portable_field ( const std::string & field_name,
std::shared_ptr< ClassDefinition > def )

Definition at line 143 of file serialization.cpp.

145{
146 check();
147 if (def->get_class_id() == 0) {
148 BOOST_THROW_EXCEPTION(exception::illegal_argument(
149 "ClassDefinitionBuilder::addPortableField",
150 "Portable class id cannot be zero!"));
151 }
152 FieldDefinition fieldDefinition(index_++,
153 field_name,
154 field_type::TYPE_PORTABLE,
155 def->get_factory_id(),
156 def->get_class_id(),
157 def->get_version());
158 field_definitions_.push_back(fieldDefinition);
159 return *this;
160}

◆ build()

std::shared_ptr< ClassDefinition > hazelcast::client::serialization::ClassDefinitionBuilder::build ( )

Definition at line 205 of file serialization.cpp.

206{
207 done_ = true;
208 std::shared_ptr<ClassDefinition> cd(
209 new ClassDefinition(factory_id_, class_id_, version_));
210
211 std::vector<FieldDefinition>::iterator fdIt;
212 for (fdIt = field_definitions_.begin(); fdIt != field_definitions_.end();
213 fdIt++) {
214 cd->add_field_def(*fdIt);
215 }
216 return cd;
217}

◆ get_class_id()

int hazelcast::client::serialization::ClassDefinitionBuilder::get_class_id ( )

Definition at line 246 of file serialization.cpp.

247{
248 return class_id_;
249}

◆ get_factory_id()

int hazelcast::client::serialization::ClassDefinitionBuilder::get_factory_id ( )

Definition at line 240 of file serialization.cpp.

241{
242 return factory_id_;
243}

◆ get_version()

int hazelcast::client::serialization::ClassDefinitionBuilder::get_version ( )

Definition at line 252 of file serialization.cpp.

253{
254 return version_;
255}

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