24 #ifndef HAZELCAST_DATA_INPUT 25 #define HAZELCAST_DATA_INPUT 27 #include "hazelcast/client/exception/IOException.h" 28 #include "hazelcast/client/serialization/Serializer.h" 29 #include "hazelcast/client/serialization/pimpl/DataSerializer.h" 30 #include "hazelcast/client/serialization/pimpl/PortableSerializer.h" 31 #include "hazelcast/client/serialization/pimpl/ConstantSerializers.h" 32 #include "hazelcast/client/serialization/pimpl/SerializerHolder.h" 33 #include "hazelcast/client/serialization/ClassDefinition.h" 34 #include "hazelcast/client/serialization/pimpl/PortableContext.h" 35 #include "hazelcast/client/exception/HazelcastSerializationException.h" 36 #include "hazelcast/client/serialization/pimpl/SerializationConstants.h" 37 #include "hazelcast/util/IOUtil.h" 38 #include "hazelcast/client/serialization/TypeIDS.h" 39 #include "hazelcast/util/HazelcastDll.h" 41 #include <boost/shared_ptr.hpp> 47 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64) 49 #pragma warning(disable: 4251) //for dll export 54 namespace serialization {
57 class IdentifiedDataSerializable;
60 class PortableContext;
76 ObjectDataInput(pimpl::DataInput &dataInput, pimpl::SerializerHolder &serializerHolder);
82 void readFully(std::vector<byte> &byteArray);
142 std::auto_ptr<std::string> readUTF();
148 std::auto_ptr<std::vector<byte> > readByteArray();
154 std::auto_ptr<std::vector<bool> > readBooleanArray();
160 std::auto_ptr<std::vector<char> > readCharArray();
166 std::auto_ptr<std::vector<int32_t> > readIntArray();
172 std::auto_ptr<std::vector<int64_t> > readLongArray();
178 std::auto_ptr<std::vector<double> > readDoubleArray();
184 std::auto_ptr<std::vector<float> > readFloatArray();
190 std::auto_ptr<std::vector<int16_t> > readShortArray();
196 std::auto_ptr<std::vector<std::string> > readUTFArray();
202 std::auto_ptr<std::vector<std::string *> > readUTFPointerArray();
212 int32_t typeId = readInt();
213 return readObject<T>(typeId);
217 std::auto_ptr<T> readObject(int32_t typeId) {
218 boost::shared_ptr<SerializerBase> serializer = serializerHolder.serializerFor(typeId);
219 if (NULL == serializer.get()) {
220 const std::string message =
"No serializer found for serializerId :" +
221 util::IOUtil::to_string(typeId) +
", typename :" +
223 throw exception::HazelcastSerializationException(
"ObjectDataInput::readInternal", message);
226 return readObjectInternal<T>(typeId, serializer);
233 pimpl::Data readData();
244 void position(
int newPos);
247 pimpl::DataInput &dataInput;
248 pimpl::SerializerHolder &serializerHolder;
250 ObjectDataInput(
const ObjectDataInput &);
252 void operator=(
const ObjectDataInput &);
255 T *getBackwardCompatiblePointer(
void *actualData,
const T *typePointer)
const {
256 return reinterpret_cast<T *
>(actualData);
261 readObjectInternal(int32_t typeId,
const boost::shared_ptr<SerializerBase> &serializer) {
263 case serialization::pimpl::SerializationConstants::CONSTANT_TYPE_DATA: {
264 serialization::pimpl::DataSerializer *dataSerializer =
265 static_cast<serialization::pimpl::DataSerializer *
>(serializer.get());
266 return dataSerializer->readObject<T>(*this);
268 case serialization::pimpl::SerializationConstants::CONSTANT_TYPE_PORTABLE: {
269 serialization::pimpl::PortableSerializer *portableSerializer =
270 static_cast<serialization::pimpl::PortableSerializer *
>(serializer.get());
272 return portableSerializer->readObject<T>(*this);
275 boost::shared_ptr<StreamSerializer> streamSerializer = boost::static_pointer_cast<StreamSerializer>(
277 return std::auto_ptr<T>(getBackwardCompatiblePointer<T>(streamSerializer->read(*
this),
289 HAZELCAST_API std::vector<std::string> *ObjectDataInput::getBackwardCompatiblePointer(
void *actualData,
290 const std::vector<std::string> *typePointer)
const;
298 std::auto_ptr<HazelcastJsonValue>
300 ObjectDataInput::readObjectInternal(int32_t typeId,
const boost::shared_ptr<SerializerBase> &serializer);
305 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
PN (Positive-Negative) CRDT counter.
Definition: MapEntryView.h:32