You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2015/11/09 11:45:37 UTC
[07/14] ignite git commit: IGNITE-1846: CPP: "portable" -> "binary",
"metadata" -> "type".
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/binary/binary_utils.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/binary/binary_utils.h b/modules/platforms/cpp/core/include/ignite/impl/binary/binary_utils.h
new file mode 100644
index 0000000..c1a1ceb
--- /dev/null
+++ b/modules/platforms/cpp/core/include/ignite/impl/binary/binary_utils.h
@@ -0,0 +1,344 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _IGNITE_IMPL_BINARY_UTILS
+#define _IGNITE_IMPL_BINARY_UTILS
+
+#include <stdint.h>
+
+#include "ignite/guid.h"
+
+namespace ignite
+{
+ namespace impl
+ {
+ namespace interop
+ {
+ class InteropInputStream;
+ class InteropOutputStream;
+ }
+
+ namespace binary
+ {
+ /**
+ * Binary uilts.
+ */
+ class IGNITE_IMPORT_EXPORT BinaryUtils
+ {
+ public:
+ /**
+ * Utility method to read signed 8-bit integer from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static int8_t ReadInt8(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write signed 8-bit integer to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteInt8(interop::InteropOutputStream* stream, int8_t val);
+
+ /**
+ * Utility method to read signed 8-bit integer array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadInt8Array(interop::InteropInputStream* stream, int8_t* res, const int32_t len);
+
+ /**
+ * Utility method to write signed 8-bit integer array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteInt8Array(interop::InteropOutputStream* stream, const int8_t* val, const int32_t len);
+
+ /**
+ * Utility method to read boolean from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static bool ReadBool(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write bool to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteBool(interop::InteropOutputStream* stream, bool val);
+
+ /**
+ * Utility method to read bool array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadBoolArray(interop::InteropInputStream* stream, bool* res, const int32_t len);
+
+ /**
+ * Utility method to write bool array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteBoolArray(interop::InteropOutputStream* stream, const bool* val, const int32_t len);
+
+ /**
+ * Utility method to read signed 16-bit integer from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static int16_t ReadInt16(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write signed 16-bit integer to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteInt16(interop::InteropOutputStream* stream, int16_t val);
+
+ /**
+ * Utility method to read signed 16-bit integer array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadInt16Array(interop::InteropInputStream* stream, int16_t* res, const int32_t len);
+
+ /**
+ * Utility method to write signed 16-bit integer array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteInt16Array(interop::InteropOutputStream* stream, const int16_t* val, const int32_t len);
+
+ /**
+ * Utility method to read unsigned 16-bit integer from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static uint16_t ReadUInt16(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write unsigned 16-bit integer to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteUInt16(interop::InteropOutputStream* stream, uint16_t val);
+
+ /**
+ * Utility method to read unsigned 16-bit integer array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadUInt16Array(interop::InteropInputStream* stream, uint16_t* res, const int32_t len);
+
+ /**
+ * Utility method to write unsigned 16-bit integer array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteUInt16Array(interop::InteropOutputStream* stream, const uint16_t* val, const int32_t len);
+
+ /**
+ * Utility method to read signed 32-bit integer from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static int32_t ReadInt32(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write signed 32-bit integer to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteInt32(interop::InteropOutputStream* stream, int32_t val);
+
+ /**
+ * Utility method to read signed 32-bit integer array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadInt32Array(interop::InteropInputStream* stream, int32_t* res, const int32_t len);
+
+ /**
+ * Utility method to write signed 32-bit integer array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteInt32Array(interop::InteropOutputStream* stream, const int32_t* val, const int32_t len);
+
+ /**
+ * Utility method to read signed 64-bit integer from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static int64_t ReadInt64(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write signed 64-bit integer to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteInt64(interop::InteropOutputStream* stream, int64_t val);
+
+ /**
+ * Utility method to read signed 64-bit integer array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadInt64Array(interop::InteropInputStream* stream, int64_t* res, const int32_t len);
+
+ /**
+ * Utility method to write signed 64-bit integer array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteInt64Array(interop::InteropOutputStream* stream, const int64_t* val, const int32_t len);
+
+ /**
+ * Utility method to read float from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static float ReadFloat(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write float to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteFloat(interop::InteropOutputStream* stream, float val);
+
+ /**
+ * Utility method to read float array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadFloatArray(interop::InteropInputStream* stream, float* res, const int32_t len);
+
+ /**
+ * Utility method to write float array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteFloatArray(interop::InteropOutputStream* stream, const float* val, const int32_t len);
+
+ /**
+ * Utility method to read double from stream.
+ *
+ * @param stream Stream.
+ * @return Value.
+ */
+ static double ReadDouble(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write double to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteDouble(interop::InteropOutputStream* stream, double val);
+
+ /**
+ * Utility method to read double array from stream.
+ *
+ * @param stream Stream.
+ * @param res Target array.
+ * @param len Array length.
+ */
+ static void ReadDoubleArray(interop::InteropInputStream* stream, double* res, const int32_t len);
+
+ /**
+ * Utility method to write double array to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Array length.
+ */
+ static void WriteDoubleArray(interop::InteropOutputStream* stream, const double* val, const int32_t len);
+
+ /**
+ * Utility method to read Guid from stream.
+ *
+ * @param stream Stream.
+ * @param res Value.
+ */
+ static Guid ReadGuid(interop::InteropInputStream* stream);
+
+ /**
+ * Utility method to write Guid to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ */
+ static void WriteGuid(interop::InteropOutputStream* stream, const Guid val);
+
+ /**
+ * Utility method to write string to stream.
+ *
+ * @param stream Stream.
+ * @param val Value.
+ * @param len Length.
+ */
+ static void WriteString(interop::InteropOutputStream* stream, const char* val, const int32_t len);
+ };
+ }
+ }
+}
+
+#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/binary/binary_writer_impl.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/binary/binary_writer_impl.h b/modules/platforms/cpp/core/include/ignite/impl/binary/binary_writer_impl.h
new file mode 100644
index 0000000..fe31ece
--- /dev/null
+++ b/modules/platforms/cpp/core/include/ignite/impl/binary/binary_writer_impl.h
@@ -0,0 +1,913 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _IGNITE_IMPL_BINARY_WRITER
+#define _IGNITE_IMPL_BINARY_WRITER
+
+#include <cstring>
+#include <string>
+#include <stdint.h>
+
+#include <ignite/common/common.h>
+#include <ignite/common/concurrent.h>
+
+#include "ignite/impl/interop/interop_output_stream.h"
+#include "ignite/impl/binary/binary_common.h"
+#include "ignite/impl/binary/binary_id_resolver.h"
+#include "ignite/impl/binary/binary_type_manager.h"
+#include "ignite/impl/binary/binary_utils.h"
+#include "ignite/impl/binary/binary_schema.h"
+#include "ignite/binary/binary_consts.h"
+#include "ignite/binary/binary_type.h"
+#include "ignite/guid.h"
+#include "binary_type_manager.h"
+
+namespace ignite
+{
+ namespace impl
+ {
+ namespace binary
+ {
+ /**
+ * Internal implementation of binary reader.
+ */
+ class IGNITE_IMPORT_EXPORT BinaryWriterImpl
+ {
+ public:
+ /**
+ * Constructor.
+ *
+ * @param stream Interop stream.
+ * @param idRslvr Binary ID resolver.
+ * @param metaMgr Type manager.
+ * @param metaHnd Type handler.
+ */
+ BinaryWriterImpl(ignite::impl::interop::InteropOutputStream* stream, BinaryIdResolver* idRslvr,
+ BinaryTypeManager* metaMgr, BinaryTypeHandler* metaHnd, int32_t start);
+
+ /**
+ * Constructor used to construct light-weight writer allowing only raw operations
+ * and primitive objects.
+ *
+ * @param stream Interop stream.
+ * @param metaMgr Type manager.
+ */
+ BinaryWriterImpl(ignite::impl::interop::InteropOutputStream* stream, BinaryTypeManager* metaMgr);
+
+ /**
+ * Write 8-byte signed integer. Maps to "byte" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteInt8(const int8_t val);
+
+ /**
+ * Write array of 8-byte signed integers. Maps to "byte[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt8Array(const int8_t* val, const int32_t len);
+
+ /**
+ * Write 8-byte signed integer. Maps to "byte" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteInt8(const char* fieldName, const int8_t val);
+
+ /**
+ * Write array of 8-byte signed integers. Maps to "byte[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt8Array(const char* fieldName, const int8_t* val, const int32_t len);
+
+ /**
+ * Write bool. Maps to "short" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteBool(const bool val);
+
+ /**
+ * Write array of bools. Maps to "bool[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteBoolArray(const bool* val, const int32_t len);
+
+ /**
+ * Write bool. Maps to "short" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteBool(const char* fieldName, const bool val);
+
+ /**
+ * Write array of bools. Maps to "bool[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteBoolArray(const char* fieldName, const bool* val, const int32_t len);
+
+ /**
+ * Write 16-byte signed integer. Maps to "short" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteInt16(const int16_t val);
+
+ /**
+ * Write array of 16-byte signed integers. Maps to "short[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt16Array(const int16_t* val, const int32_t len);
+
+ /**
+ * Write 16-byte signed integer. Maps to "short" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteInt16(const char* fieldName, const int16_t val);
+
+ /**
+ * Write array of 16-byte signed integers. Maps to "short[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt16Array(const char* fieldName, const int16_t* val, const int32_t len);
+
+ /**
+ * Write 16-byte unsigned integer. Maps to "char" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteUInt16(const uint16_t val);
+
+ /**
+ * Write array of 16-byte unsigned integers. Maps to "char[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteUInt16Array(const uint16_t* val, const int32_t len);
+
+ /**
+ * Write 16-byte unsigned integer. Maps to "char" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteUInt16(const char* fieldName, const uint16_t val);
+
+ /**
+ * Write array of 16-byte unsigned integers. Maps to "char[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteUInt16Array(const char* fieldName, const uint16_t* val, const int32_t len);
+
+ /**
+ * Write 32-byte signed integer. Maps to "int" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteInt32(const int32_t val);
+
+ /**
+ * Write array of 32-byte signed integers. Maps to "int[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt32Array(const int32_t* val, const int32_t len);
+
+ /**
+ * Write 32-byte signed integer. Maps to "int" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteInt32(const char* fieldName, const int32_t val);
+
+ /**
+ * Write array of 32-byte signed integers. Maps to "int[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt32Array(const char* fieldName, const int32_t* val, const int32_t len);
+
+ /**
+ * Write 64-byte signed integer. Maps to "long" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteInt64(const int64_t val);
+
+ /**
+ * Write array of 64-byte signed integers. Maps to "long[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt64Array(const int64_t* val, const int32_t len);
+
+ /**
+ * Write 64-byte signed integer. Maps to "long" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteInt64(const char* fieldName, const int64_t val);
+
+ /**
+ * Write array of 64-byte signed integers. Maps to "long[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteInt64Array(const char* fieldName, const int64_t* val, const int32_t len);
+
+ /**
+ * Write float. Maps to "float" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteFloat(const float val);
+
+ /**
+ * Write array of floats. Maps to "float[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteFloatArray(const float* val, const int32_t len);
+
+ /**
+ * Write float. Maps to "float" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteFloat(const char* fieldName, const float val);
+
+ /**
+ * Write array of floats. Maps to "float[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteFloatArray(const char* fieldName, const float* val, const int32_t len);
+
+ /**
+ * Write double. Maps to "double" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteDouble(const double val);
+
+ /**
+ * Write array of doubles. Maps to "double[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteDoubleArray(const double* val, const int32_t len);
+
+ /**
+ * Write double. Maps to "double" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteDouble(const char* fieldName, const double val);
+
+ /**
+ * Write array of doubles. Maps to "double[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteDoubleArray(const char* fieldName, const double* val, const int32_t len);
+
+ /**
+ * Write Guid. Maps to "UUID" type in Java.
+ *
+ * @param val Value.
+ */
+ void WriteGuid(const Guid val);
+
+ /**
+ * Write array of Guids. Maps to "UUID[]" type in Java.
+ *
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteGuidArray(const Guid* val, const int32_t len);
+
+ /**
+ * Write Guid. Maps to "UUID" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ */
+ void WriteGuid(const char* fieldName, const Guid val);
+
+ /**
+ * Write array of Guids. Maps to "UUID[]" type in Java.
+ *
+ * @param fieldName Field name.
+ * @param val Array.
+ * @param len Array length.
+ */
+ void WriteGuidArray(const char* fieldName, const Guid* val, const int32_t len);
+
+ /**
+ * Write string.
+ *
+ * @param val String.
+ * @param len String length (characters).
+ */
+ void WriteString(const char* val, const int32_t len);
+
+ /**
+ * Write string.
+ *
+ * @param fieldName Field name.
+ * @param val String.
+ * @param len String length (characters).
+ */
+ void WriteString(const char* fieldName, const char* val, const int32_t len);
+
+ /**
+ * Start string array write.
+ *
+ * @param typ Collection type.
+ * @return Session ID.
+ */
+ int32_t WriteStringArray();
+
+ /**
+ * Start string array write.
+ *
+ * @param fieldName Field name.
+ * @return Session ID.
+ */
+ int32_t WriteStringArray(const char* fieldName);
+
+ /**
+ * Write string element.
+ *
+ * @param id Session ID.
+ * @param val Value.
+ * @param len Length.
+ */
+ void WriteStringElement(int32_t id, const char* val, int32_t len);
+
+ /**
+ * Write NULL value.
+ */
+ void WriteNull();
+
+ /**
+ * Write NULL value.
+ *
+ * @param fieldName Field name.
+ */
+ void WriteNull(const char* fieldName);
+
+ /**
+ * Start array write.
+ *
+ * @param typ Collection type.
+ * @return Session ID.
+ */
+ int32_t WriteArray();
+
+ /**
+ * Start array write.
+ *
+ * @param fieldName Field name.
+ * @return Session ID.
+ */
+ int32_t WriteArray(const char* fieldName);
+
+ /**
+ * Start collection write.
+ *
+ * @param typ Collection type.
+ * @return Session ID.
+ */
+ int32_t WriteCollection(ignite::binary::CollectionType typ);
+
+ /**
+ * Start collection write.
+ *
+ * @param fieldName Field name.
+ * @param typ Collection type.
+ * @return Session ID.
+ */
+ int32_t WriteCollection(const char* fieldName, ignite::binary::CollectionType typ);
+
+ /**
+ * Write values in interval [first, last).
+ *
+ * @param first Iterator pointing to the beginning of the interval.
+ * @param last Iterator pointing to the end of the interval.
+ * @param typ Collection type.
+ */
+ template<typename InputIterator>
+ void WriteCollection(InputIterator first, InputIterator last, ignite::binary::CollectionType typ)
+ {
+ StartContainerSession(true);
+
+ WriteCollectionWithinSession(first, last, typ);
+ }
+
+ /**
+ * Write values in interval [first, last).
+ *
+ * @param fieldName Field name.
+ * @param first Iterator pointing to the beginning of the interval.
+ * @param last Iterator pointing to the end of the interval.
+ * @param typ Collection type.
+ */
+ template<typename InputIterator>
+ void WriteCollection(const char* fieldName, InputIterator first, InputIterator last,
+ ignite::binary::CollectionType typ)
+ {
+ StartContainerSession(false);
+
+ WriteFieldId(fieldName, IGNITE_TYPE_COLLECTION);
+
+ WriteCollectionWithinSession(first, last, typ);
+ }
+
+ /**
+ * Start map write.
+ *
+ * @param typ Map type.
+ * @return Session ID.
+ */
+ int32_t WriteMap(ignite::binary::MapType typ);
+
+ /**
+ * Start map write.
+ *
+ * @param fieldName Field name.
+ * @param typ Map type.
+ * @return Session ID.
+ */
+ int32_t WriteMap(const char* fieldName, ignite::binary::MapType typ);
+
+ /**
+ * Write collection element.
+ *
+ * @param id Session ID.
+ * @param val Value.
+ */
+ template<typename T>
+ void WriteElement(int32_t id, T val)
+ {
+ CheckSession(id);
+
+ WriteTopObject<T>(val);
+
+ elemCnt++;
+ }
+
+ /**
+ * Write map element.
+ *
+ * @param id Session ID.
+ * @param key Key.
+ * @param val Value.
+ */
+ template<typename K, typename V>
+ void WriteElement(int32_t id, K key, V val)
+ {
+ CheckSession(id);
+
+ WriteTopObject<K>(key);
+ WriteTopObject<V>(val);
+
+ elemCnt++;
+ }
+
+ /**
+ * Commit container write session.
+ *
+ * @param id Session ID.
+ */
+ void CommitContainer(int32_t id);
+
+ /**
+ * Write object.
+ *
+ * @param val Object.
+ */
+ template<typename T>
+ void WriteObject(T val)
+ {
+ CheckRawMode(true);
+
+ WriteTopObject(val);
+ }
+
+ /**
+ * Write object.
+ *
+ * @param fieldName Field name.
+ * @param val Object.
+ */
+ template<typename T>
+ void WriteObject(const char* fieldName, T val)
+ {
+ CheckRawMode(false);
+
+ WriteFieldId(fieldName, IGNITE_TYPE_OBJECT);
+
+ WriteTopObject(val);
+ }
+
+ /**
+ * Set raw mode.
+ */
+ void SetRawMode();
+
+ /**
+ * Get raw position.
+ */
+ int32_t GetRawPosition() const;
+
+ /**
+ * Write object.
+ *
+ * @param obj Object to write.
+ */
+ template<typename T>
+ void WriteTopObject(const T& obj)
+ {
+ ignite::binary::BinaryType<T> type;
+
+ if (type.IsNull(obj))
+ stream->WriteInt8(IGNITE_HDR_NULL);
+ else
+ {
+ TemplatedBinaryIdResolver<T> idRslvr(type);
+ ignite::common::concurrent::SharedPointer<BinaryTypeHandler> metaHnd;
+
+ if (metaMgr)
+ metaHnd = metaMgr->GetHandler(idRslvr.GetTypeId());
+
+ int32_t pos = stream->Position();
+
+ BinaryWriterImpl writerImpl(stream, &idRslvr, metaMgr, metaHnd.Get(), pos);
+ ignite::binary::BinaryWriter writer(&writerImpl);
+
+ stream->WriteInt8(IGNITE_HDR_FULL);
+ stream->WriteInt8(IGNITE_PROTO_VER);
+ stream->WriteInt16(IGNITE_BINARY_FLAG_USER_OBJECT);
+ stream->WriteInt32(idRslvr.GetTypeId());
+ stream->WriteInt32(type.GetHashCode(obj));
+
+ // Reserve space for the Object Lenght, Schema ID and Schema or Raw Offsett.
+ stream->Reserve(12);
+
+ type.Write(writer, obj);
+
+ writerImpl.PostWrite();
+
+ if (metaMgr)
+ metaMgr->SubmitHandler(type.GetTypeName(), idRslvr.GetTypeId(), metaHnd.Get());
+ }
+ }
+
+ /**
+ * Perform all nessasary post-write operations.
+ * Includes:
+ * - writing object length;
+ * - writing schema offset;
+ * - writing schema id;
+ * - writing schema to the tail.
+ */
+ void PostWrite();
+
+ /**
+ * Check if the writer has object schema.
+ *
+ * @return True if has schema.
+ */
+ bool HasSchema() const;
+
+ /**
+ * Writes contating schema and clears current schema.
+ */
+ void WriteAndClearSchema();
+
+ /**
+ * Get underlying stream.
+ *
+ * @return Stream.
+ */
+ impl::interop::InteropOutputStream* GetStream();
+ private:
+ /** Underlying stream. */
+ ignite::impl::interop::InteropOutputStream* stream;
+
+ /** ID resolver. */
+ BinaryIdResolver* idRslvr;
+
+ /** Type manager. */
+ BinaryTypeManager* metaMgr;
+
+ /** Type handler. */
+ BinaryTypeHandler* metaHnd;
+
+ /** Type ID. */
+ int32_t typeId;
+
+ /** Elements write session ID generator. */
+ int32_t elemIdGen;
+
+ /** Elements write session ID. */
+ int32_t elemId;
+
+ /** Elements count. */
+ int32_t elemCnt;
+
+ /** Elements start position. */
+ int32_t elemPos;
+
+ /** Raw data offset. */
+ int32_t rawPos;
+
+ /** Schema of the current object. */
+ BinarySchema schema;
+
+ /** Writing start position. */
+ int32_t start;
+
+ IGNITE_NO_COPY_ASSIGNMENT(BinaryWriterImpl)
+
+ /**
+ * Write a primitive value to stream in raw mode.
+ *
+ * @param val Value.
+ * @param func Stream function.
+ */
+ template<typename T>
+ void WritePrimitiveRaw(
+ const T val,
+ void(*func)(interop::InteropOutputStream*, T)
+ )
+ {
+ CheckRawMode(true);
+ CheckSingleMode(true);
+
+ func(stream, val);
+ }
+
+ /**
+ * Write a primitive array to stream in raw mode.
+ *
+ * @param val Value.
+ * @param len Array length.
+ * @param func Stream function.
+ * @param hdr Header.
+ */
+ template<typename T>
+ void WritePrimitiveArrayRaw(
+ const T* val,
+ const int32_t len,
+ void(*func)(interop::InteropOutputStream*, const T*, const int32_t),
+ const int8_t hdr
+ )
+ {
+ CheckRawMode(true);
+ CheckSingleMode(true);
+
+ if (val)
+ {
+ stream->WriteInt8(hdr);
+ stream->WriteInt32(len);
+ func(stream, val, len);
+ }
+ else
+ stream->WriteInt8(IGNITE_HDR_NULL);
+ }
+
+ /**
+ * Write a primitive value to stream.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ * @param func Stream function.
+ * @param typ Field type ID.
+ * @param len Field length.
+ */
+ template<typename T>
+ void WritePrimitive(
+ const char* fieldName,
+ const T val,
+ void(*func)(interop::InteropOutputStream*, T),
+ const int8_t typ,
+ const int32_t len
+ )
+ {
+ CheckRawMode(false);
+ CheckSingleMode(true);
+
+ WriteFieldId(fieldName, typ);
+
+ stream->WriteInt8(typ);
+
+ func(stream, val);
+ }
+
+ /**
+ * Write a primitive array to stream.
+ *
+ * @param fieldName Field name.
+ * @param val Value.
+ * @param len Array length.
+ * @param func Stream function.
+ * @param hdr Header.
+ * @param lenShift Length shift.
+ */
+ template<typename T>
+ void WritePrimitiveArray(
+ const char* fieldName,
+ const T* val,
+ const int32_t len,
+ void(*func)(interop::InteropOutputStream*, const T*, const int32_t),
+ const int8_t hdr,
+ const int32_t lenShift
+ )
+ {
+ CheckRawMode(false);
+ CheckSingleMode(true);
+
+ WriteFieldId(fieldName, hdr);
+
+ if (val)
+ {
+ stream->WriteInt8(hdr);
+ stream->WriteInt32(len);
+ func(stream, val, len);
+ }
+ else
+ {
+ stream->WriteInt8(IGNITE_HDR_NULL);
+ }
+ }
+
+ /**
+ * Write values in interval [first, last).
+ * New session should be started prior to call to this method.
+ * @param first Iterator pointing to the beginning of the interval.
+ * @param last Iterator pointing to the end of the interval.
+ * @param typ Collection type.
+ */
+ template<typename InputIterator>
+ void WriteCollectionWithinSession(InputIterator first, InputIterator last,
+ ignite::binary::CollectionType typ)
+ {
+ stream->WriteInt8(IGNITE_TYPE_COLLECTION);
+ stream->Position(stream->Position() + 4);
+ stream->WriteInt8(typ);
+
+ for (InputIterator i = first; i != last; ++i)
+ WriteElement(elemId, *i);
+
+ CommitContainer(elemId);
+ }
+
+ /**
+ * Check raw mode.
+ *
+ * @param expected Expected raw mode of the reader.
+ */
+ void CheckRawMode(bool expected) const;
+
+ /**
+ * Check whether writer is currently operating in single mode.
+ *
+ * @param expected Expected value.
+ */
+ void CheckSingleMode(bool expected) const;
+
+ /**
+ * Start new container writer session.
+ *
+ * @param expRawMode Expected raw mode.
+ */
+ void StartContainerSession(bool expRawMode);
+
+ /**
+ * Check whether session ID matches.
+ *
+ * @param ses Expected session ID.
+ */
+ void CheckSession(int32_t expSes) const;
+
+ /**
+ * Write field ID.
+ *
+ * @param fieldName Field name.
+ * @param fieldTypeId Field type ID.
+ */
+ void WriteFieldId(const char* fieldName, int32_t fieldTypeId);
+
+ /**
+ * Write primitive value.
+ *
+ * @param obj Value.
+ * @param func Stream function.
+ * @param hdr Header.
+ */
+ template<typename T>
+ void WriteTopObject0(const T obj, void(*func)(impl::interop::InteropOutputStream*, T), const int8_t hdr)
+ {
+ stream->WriteInt8(hdr);
+ func(stream, obj);
+ }
+ };
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const int8_t& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const bool& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const int16_t& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const uint16_t& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const int32_t& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const int64_t& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const float& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const double& obj);
+
+ template<>
+ void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const Guid& obj);
+
+ template<>
+ inline void IGNITE_IMPORT_EXPORT BinaryWriterImpl::WriteTopObject(const std::string& obj)
+ {
+ const char* obj0 = obj.c_str();
+
+ int32_t len = static_cast<int32_t>(strlen(obj0));
+
+ stream->WriteInt8(IGNITE_TYPE_STRING);
+
+ BinaryUtils::WriteString(stream, obj0, len);
+ }
+ }
+ }
+}
+
+#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h b/modules/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h
index 803ef04..31ebca1 100644
--- a/modules/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h
+++ b/modules/platforms/cpp/core/include/ignite/impl/cache/cache_impl.h
@@ -403,8 +403,8 @@ namespace ignite
ignite::common::concurrent::SharedPointer<interop::InteropMemory> mem = env.Get()->AllocateMemory();
interop::InteropMemory* mem0 = mem.Get();
interop::InteropOutputStream out(mem0);
- portable::PortableWriterImpl writer(&out, env.Get()->GetMetadataManager());
- ignite::portable::PortableRawWriter rawWriter(&writer);
+ binary::BinaryWriterImpl writer(&out, env.Get()->GetTypeManager());
+ ignite::binary::BinaryRawWriter rawWriter(&writer);
qry.Write(rawWriter);
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/cache/query/query_fields_row_impl.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/cache/query/query_fields_row_impl.h b/modules/platforms/cpp/core/include/ignite/impl/cache/query/query_fields_row_impl.h
index ff04c09..213f717 100644
--- a/modules/platforms/cpp/core/include/ignite/impl/cache/query/query_fields_row_impl.h
+++ b/modules/platforms/cpp/core/include/ignite/impl/cache/query/query_fields_row_impl.h
@@ -156,7 +156,7 @@ namespace ignite
interop::InteropInputStream stream;
/** Row data reader. */
- portable::PortableReaderImpl reader;
+ binary::BinaryReaderImpl reader;
/** Number of elements in a row. */
int32_t size;
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/ignite_environment.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/ignite_environment.h b/modules/platforms/cpp/core/include/ignite/impl/ignite_environment.h
index 59c0300..2fbdb44 100644
--- a/modules/platforms/cpp/core/include/ignite/impl/ignite_environment.h
+++ b/modules/platforms/cpp/core/include/ignite/impl/ignite_environment.h
@@ -22,7 +22,7 @@
#include <ignite/common/java.h>
#include "ignite/impl/interop/interop_memory.h"
-#include "portable/portable_metadata_manager.h"
+#include "binary/binary_type_manager.h"
namespace ignite
{
@@ -104,11 +104,11 @@ namespace ignite
ignite::common::concurrent::SharedPointer<interop::InteropMemory> GetMemory(int64_t memPtr);
/**
- * Get metadata manager.
+ * Get type manager.
*
- * @param Metadata manager.
+ * @param Type manager.
*/
- portable::PortableMetadataManager* GetMetadataManager();
+ binary::BinaryTypeManager* GetTypeManager();
private:
/** Context to access Java. */
ignite::common::concurrent::SharedPointer<ignite::common::java::JniContext> ctx;
@@ -119,8 +119,8 @@ namespace ignite
/** Ignite name. */
char* name;
- /** Metadata manager. */
- portable::PortableMetadataManager* metaMgr;
+ /** Type manager. */
+ binary::BinaryTypeManager* metaMgr;
IGNITE_NO_COPY_ASSIGNMENT(IgniteEnvironment);
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/operations.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/operations.h b/modules/platforms/cpp/core/include/ignite/impl/operations.h
index 8f32922..5423a56 100644
--- a/modules/platforms/cpp/core/include/ignite/impl/operations.h
+++ b/modules/platforms/cpp/core/include/ignite/impl/operations.h
@@ -25,9 +25,9 @@
#include <ignite/common/common.h>
#include "ignite/cache/cache_entry.h"
-#include "ignite/impl/portable/portable_reader_impl.h"
-#include "ignite/impl/portable/portable_writer_impl.h"
-#include "ignite/portable/portable.h"
+#include "ignite/impl/binary/binary_reader_impl.h"
+#include "ignite/impl/binary/binary_writer_impl.h"
+#include "ignite/binary/binary.h"
namespace ignite
{
@@ -52,7 +52,7 @@ namespace ignite
*
* @param writer Writer.
*/
- virtual void ProcessInput(ignite::impl::portable::PortableWriterImpl& writer) = 0;
+ virtual void ProcessInput(ignite::impl::binary::BinaryWriterImpl& writer) = 0;
};
/**
@@ -72,7 +72,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessInput(ignite::impl::portable::PortableWriterImpl& writer)
+ virtual void ProcessInput(ignite::impl::binary::BinaryWriterImpl& writer)
{
writer.WriteTopObject<T>(*val);
}
@@ -101,7 +101,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessInput(ignite::impl::portable::PortableWriterImpl& writer)
+ virtual void ProcessInput(ignite::impl::binary::BinaryWriterImpl& writer)
{
writer.WriteTopObject<T1>(*val1);
writer.WriteTopObject<T2>(*val2);
@@ -135,7 +135,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessInput(ignite::impl::portable::PortableWriterImpl& writer)
+ virtual void ProcessInput(ignite::impl::binary::BinaryWriterImpl& writer)
{
writer.WriteTopObject<T1>(*val1);
writer.WriteTopObject<T2>(*val2);
@@ -171,7 +171,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessInput(ignite::impl::portable::PortableWriterImpl& writer)
+ virtual void ProcessInput(ignite::impl::binary::BinaryWriterImpl& writer)
{
writer.GetStream()->WriteInt32(static_cast<int32_t>(val->size()));
@@ -202,7 +202,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessInput(ignite::impl::portable::PortableWriterImpl& writer)
+ virtual void ProcessInput(ignite::impl::binary::BinaryWriterImpl& writer)
{
writer.GetStream()->WriteInt32(static_cast<int32_t>(val->size()));
@@ -236,7 +236,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessInput(ignite::impl::portable::PortableWriterImpl& writer)
+ virtual void ProcessInput(ignite::impl::binary::BinaryWriterImpl& writer)
{
writer.WriteTopObject<T>(*key);
writer.GetStream()->WriteInt32(peekModes);
@@ -270,7 +270,7 @@ namespace ignite
*
* @param reader Reader.
*/
- virtual void ProcessOutput(ignite::impl::portable::PortableReaderImpl& reader) = 0;
+ virtual void ProcessOutput(ignite::impl::binary::BinaryReaderImpl& reader) = 0;
};
/**
@@ -288,7 +288,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessOutput(ignite::impl::portable::PortableReaderImpl& reader)
+ virtual void ProcessOutput(ignite::impl::binary::BinaryReaderImpl& reader)
{
val = reader.ReadTopObject<T>();
}
@@ -324,7 +324,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessOutput(ignite::impl::portable::PortableReaderImpl& reader)
+ virtual void ProcessOutput(ignite::impl::binary::BinaryReaderImpl& reader)
{
val1 = reader.ReadTopObject<T1>();
val2 = reader.ReadTopObject<T2>();
@@ -375,7 +375,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessOutput(ignite::impl::portable::PortableReaderImpl& reader)
+ virtual void ProcessOutput(ignite::impl::binary::BinaryReaderImpl& reader)
{
bool exists = reader.GetStream()->ReadBool();
@@ -427,7 +427,7 @@ namespace ignite
// No-op.
}
- virtual void ProcessOutput(ignite::impl::portable::PortableReaderImpl& reader)
+ virtual void ProcessOutput(ignite::impl::binary::BinaryReaderImpl& reader)
{
int32_t cnt = reader.ReadInt32();
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/portable/portable_common.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_common.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_common.h
deleted file mode 100644
index f08c49b..0000000
--- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_common.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _IGNITE_IMPL_PORTABLE_COMMON
-#define _IGNITE_IMPL_PORTABLE_COMMON
-
-#include <stdint.h>
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /** Header: null. */
- const int8_t IGNITE_HDR_NULL = 101;
-
- /** Header: handle. */
- const int8_t IGNITE_HDR_HND = 102;
-
- /** Header: fulle form. */
- const int8_t IGNITE_HDR_FULL = 103;
-
- /** Portable protocol version. */
- const int8_t IGNITE_PROTO_VER = 1;
-
- /** Protocol version position. */
- const int32_t PROTO_VER_POS = 1;
-
- /** Header offset: Flags. */
- const int32_t IGNITE_OFFSET_FLAGS = 2;
-
- /** Header offset: Type ID. */
- const int32_t IGNITE_OFFSET_TYPE_ID = 4;
-
- /** Header offset: Hash Code. */
- const int32_t IGNITE_OFFSET_HASH_CODE = 8;
-
- /** Header offset: Object Length. */
- const int32_t IGNITE_OFFSET_LEN = 12;
-
- /** Header offset: Schema ID. */
- const int32_t IGNITE_OFFSET_SCHEMA_ID = 16;
-
- /** Header offset: Schema or Raw Offset. */
- const int32_t IGNITE_OFFSET_SCHEMA_OR_RAW_OFF = 20;
-
- /** Full header length. */
- const int32_t IGNITE_DFLT_HDR_LEN = 24;
-
- /** Type: object. */
- const int8_t IGNITE_TYPE_OBJECT = IGNITE_HDR_FULL;
-
- /** Type: unsigned byte. */
- const int8_t IGNITE_TYPE_BYTE = 1;
-
- /** Type: short. */
- const int8_t IGNITE_TYPE_SHORT = 2;
-
- /** Type: int. */
- const int8_t IGNITE_TYPE_INT = 3;
-
- /** Type: long. */
- const int8_t IGNITE_TYPE_LONG = 4;
-
- /** Type: float. */
- const int8_t IGNITE_TYPE_FLOAT = 5;
-
- /** Type: double. */
- const int8_t IGNITE_TYPE_DOUBLE = 6;
-
- /** Type: char. */
- const int8_t IGNITE_TYPE_CHAR = 7;
-
- /** Type: boolean. */
- const int8_t IGNITE_TYPE_BOOL = 8;
-
- /** Type: decimal. */
- const int8_t IGNITE_TYPE_DECIMAL = 30;
-
- /** Type: string. */
- const int8_t IGNITE_TYPE_STRING = 9;
-
- /** Type: UUID. */
- const int8_t IGNITE_TYPE_UUID = 10;
-
- /** Type: date. */
- const int8_t IGNITE_TYPE_DATE = 11;
-
- /** Type: unsigned byte array. */
- const int8_t IGNITE_TYPE_ARRAY_BYTE = 12;
-
- /** Type: short array. */
- const int8_t IGNITE_TYPE_ARRAY_SHORT = 13;
-
- /** Type: int array. */
- const int8_t IGNITE_TYPE_ARRAY_INT = 14;
-
- /** Type: long array. */
- const int8_t IGNITE_TYPE_ARRAY_LONG = 15;
-
- /** Type: float array. */
- const int8_t IGNITE_TYPE_ARRAY_FLOAT = 16;
-
- /** Type: double array. */
- const int8_t IGNITE_TYPE_ARRAY_DOUBLE = 17;
-
- /** Type: char array. */
- const int8_t IGNITE_TYPE_ARRAY_CHAR = 18;
-
- /** Type: boolean array. */
- const int8_t IGNITE_TYPE_ARRAY_BOOL = 19;
-
- /** Type: decimal array. */
- const int8_t IGNITE_TYPE_ARRAY_DECIMAL = 31;
-
- /** Type: string array. */
- const int8_t IGNITE_TYPE_ARRAY_STRING = 20;
-
- /** Type: UUID array. */
- const int8_t IGNITE_TYPE_ARRAY_UUID = 21;
-
- /** Type: date array. */
- const int8_t IGNITE_TYPE_ARRAY_DATE = 22;
-
- /** Type: object array. */
- const int8_t IGNITE_TYPE_ARRAY = 23;
-
- /** Type: collection. */
- const int8_t IGNITE_TYPE_COLLECTION = 24;
-
- /** Type: map. */
- const int8_t IGNITE_TYPE_MAP = 25;
-
- /** Type: map entry. */
- const int8_t IGNITE_TYPE_MAP_ENTRY = 26;
-
- /** Type: portable object. */
- const int8_t IGNITE_TYPE_PORTABLE = 27;
-
- /** Read/write single object. */
- const int32_t IGNITE_PORTABLE_MODE_SINGLE = 0;
-
- /** Read/write array. */
- const int32_t IGNITE_PORTABLE_MODE_ARRAY = 1;
-
- /** Read/write collection. */
- const int32_t IGNITE_PORTABLE_MODE_COL = 2;
-
- /** Read/write map. */
- const int32_t IGNITE_PORTABLE_MODE_MAP = 3;
-
- /** User object flag. */
- const int16_t IGNITE_PORTABLE_FLAG_USER_OBJECT = 0x0001;
-
- /** Raw only flag. */
- const int16_t IGNITE_PORTABLE_FLAG_RAW_ONLY = 0x0002;
-
- /** Flag indicating that schema field offset is one byte long. */
- const int16_t IGNITE_PORTABLE_FLAG_OFFSET_1_BYTE = 0x0004;
-
- /** Flag indicating that schema field offset is two byte long. */
- const int16_t IGNITE_PORTABLE_FLAG_OFFSET_2_BYTE = 0x0008;
- }
- }
-}
-
-#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/portable/portable_id_resolver.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_id_resolver.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_id_resolver.h
deleted file mode 100644
index d8f7883..0000000
--- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_id_resolver.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _IGNITE_IMPL_PORTABLE_ID_RESOLVER
-#define _IGNITE_IMPL_PORTABLE_ID_RESOLVER
-
-#include "ignite/portable/portable_type.h"
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /**
- * Portable type id resolver.
- */
- class PortableIdResolver
- {
- public:
- /**
- * Destructor.
- */
- virtual ~PortableIdResolver()
- {
- // No-op.
- }
-
- /**
- * Get portable object type ID.
- *
- * @return Type ID.
- */
- virtual int32_t GetTypeId() = 0;
-
- /**
- * Get portable object field ID.
- *
- * @param typeId Type ID.
- * @param name Field name.
- * @return Field ID.
- */
- virtual int32_t GetFieldId(const int32_t typeId, const char* name) = 0;
- };
-
- /**
- * Templated portable type descriptor.
- */
- template<typename T>
- class TemplatedPortableIdResolver : public PortableIdResolver
- {
- public:
- /**
- * Constructor.
- */
- TemplatedPortableIdResolver()
- {
- type = ignite::portable::PortableType<T>();
- }
-
- /**
- * Constructor.
- *
- * @param type Portable type.
- */
- TemplatedPortableIdResolver(ignite::portable::PortableType<T> type) : type(type)
- {
- // No-op.
- }
-
- virtual int32_t GetTypeId()
- {
- return type.GetTypeId();
- }
-
- virtual int32_t GetFieldId(const int32_t typeId, const char* name) {
- if (!name)
- {
- IGNITE_ERROR_1(IgniteError::IGNITE_ERR_PORTABLE, "Field name cannot be NULL.");
- }
-
- return type.GetFieldId(name);
- }
- private:
- /** Actual type. */
- ignite::portable::PortableType<T> type;
- };
- }
- }
-}
-
-#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_handler.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_handler.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_handler.h
deleted file mode 100644
index a557129..0000000
--- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_handler.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _IGNITE_IMPL_PORTABLE_METADATA_HANDLER
-#define _IGNITE_IMPL_PORTABLE_METADATA_HANDLER
-
-#include <ignite/common/concurrent.h>
-
-#include "ignite/impl/portable/portable_metadata_snapshot.h"
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /**
- * Metadata handler. Tracks all metadata updates during write session.
- */
- class PortableMetadataHandler
- {
- public:
- /**
- * Constructor.
- *
- * @param snap Snapshot.
- */
- PortableMetadataHandler(SPSnap snap);
-
- /**
- * Destructor.
- */
- ~PortableMetadataHandler();
-
- /**
- * Callback invoked when field is being written.
- *
- * @param fieldId Field ID.
- * @param fieldName Field name.
- * @param fieldTypeId Field type ID.
- */
- void OnFieldWritten(int32_t fieldId, std::string fieldName, int32_t fieldTypeId);
-
- /**
- * Get initial snapshot.
- *
- * @param Snapshot.
- */
- SPSnap GetSnapshot();
-
- /**
- * Whether any difference exists.
- *
- * @param True if difference exists.
- */
- bool HasDifference();
-
- /**
- * Get recorded field IDs difference.
- *
- * @param Recorded field IDs difference.
- */
- std::set<int32_t>* GetFieldIds();
-
- /**
- * Get recorded fields difference.
- *
- * @param Recorded fields difference.
- */
- std::map<std::string, int32_t>* GetFields();
-
- private:
- /** Snapshot. */
- SPSnap snap;
-
- /** Recorded field IDs difference. */
- std::set<int32_t>* fieldIds;
-
- /** Recorded fields difference. */
- std::map<std::string, int32_t>* fields;
-
- IGNITE_NO_COPY_ASSIGNMENT(PortableMetadataHandler)
- };
- }
- }
-}
-
-#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_manager.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_manager.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_manager.h
deleted file mode 100644
index 3e2b770..0000000
--- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_manager.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _IGNITE_IMPL_PORTABLE_METADATA_MANAGER
-#define _IGNITE_IMPL_PORTABLE_METADATA_MANAGER
-
-#include <vector>
-
-#include "ignite/ignite_error.h"
-#include "ignite/impl/portable/portable_metadata_handler.h"
-#include "ignite/impl/portable/portable_metadata_updater.h"
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /**
- * Metadata manager.
- */
- class IGNITE_IMPORT_EXPORT PortableMetadataManager
- {
- public:
- /**
- * Constructor.
- */
- PortableMetadataManager();
-
- /**
- * Destructor.
- */
- ~PortableMetadataManager();
-
- /**
- * Get handler.
- *
- * @param typeId Type ID.
- */
- ignite::common::concurrent::SharedPointer<PortableMetadataHandler> GetHandler(int32_t typeId);
-
- /**
- * Submit handler for processing.
- *
- * @param typeName Type name.
- * @param typeId Type ID.
- * @param hnd Handler.
- */
- void SubmitHandler(std::string typeName, int32_t typeId, PortableMetadataHandler* hnd);
-
- /**
- * Get current metadata manager version.
- *
- * @param Version.
- */
- int32_t GetVersion();
-
- /**
- * Check whether something is updated since the given version.
- *
- * @param oldVer Old version.
- * @return True if updated and it is very likely that pending metadata exists.
- */
- bool IsUpdatedSince(int32_t oldVer);
-
- /**
- * Process pending updates.
- *
- * @param updated Updater.
- * @param err Error.
- * @return In case of success.
- */
- bool ProcessPendingUpdates(PortableMetadataUpdater* updater, IgniteError* err);
-
- private:
- /** Current snapshots. */
- ignite::common::concurrent::SharedPointer<std::map<int32_t, SPSnap>> snapshots;
-
- /** Pending snapshots. */
- std::vector<SPSnap>* pending;
-
- /** Critical section. */
- ignite::common::concurrent::CriticalSection* cs;
-
- /** Version of pending changes. */
- int32_t pendingVer;
-
- /** Latest version. */
- int32_t ver;
-
- IGNITE_NO_COPY_ASSIGNMENT(PortableMetadataManager);
-
- /**
- * Copy fields from a snapshot into relevant collections.
- *
- * @param snap Target snapshot.
- * @param fieldIds Field IDs.
- * @param fields Fields.
- */
- void CopyFields(Snap* snap, std::set<int32_t>* fieldIds, std::map<std::string, int32_t>* fields);
- };
- }
- }
-}
-
-#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_snapshot.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_snapshot.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_snapshot.h
deleted file mode 100644
index 1e000fc..0000000
--- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_snapshot.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _IGNITE_IMPL_PORTABLE_METADATA_SNAPSHOT
-#define _IGNITE_IMPL_PORTABLE_METADATA_SNAPSHOT
-
-#include <map>
-#include <set>
-#include <stdint.h>
-#include <string>
-
-#include <ignite/common/common.h>
-#include <ignite/common/concurrent.h>
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /**
- * Metadata snapshot.
- */
- class PortableMetadataSnapshot
- {
- public:
- /**
- * Constructor.
- *
- * @param typeName Type name.
- * @param typeId Type ID.
- * @param fieldIds Field IDs.
- * @param fields Fields.
- */
- PortableMetadataSnapshot(std::string typeName, int32_t typeId, std::set<int32_t>* fieldIds,
- std::map<std::string, int32_t>* fields);
-
- /**
- * Destructor.
- */
- ~PortableMetadataSnapshot();
-
- /**
- * Check whether snapshot contains a field with the given ID.
- *
- * @param fieldId Field ID.
- * @return True if contains, false otherwise.
- */
- bool ContainsFieldId(int32_t fieldId);
-
- /**
- * Get type name.
- *
- * @param Type name.
- */
- std::string GetTypeName();
-
- /**
- * Get type ID.
- *
- * @return Type ID.
- */
- int32_t GetTypeId();
-
- /**
- * Whether snapshot contains any fields.
- *
- * @param True if fields exist.
- */
- bool HasFields();
-
- /**
- * Get field IDs.
- *
- * @param Field IDs.
- */
- std::set<int32_t>* GetFieldIds();
-
- /**
- * Get fields.
- *
- * @return Fields.
- */
- std::map<std::string, int32_t>* GetFields();
-
- private:
- /** Type name. */
- std::string typeName;
-
- /** Type ID. */
- int32_t typeId;
-
- /** Known field IDs. */
- std::set<int32_t>* fieldIds;
-
- /** Field name-type mappings. */
- std::map<std::string, int32_t>* fields;
-
- IGNITE_NO_COPY_ASSIGNMENT(PortableMetadataSnapshot)
- };
-
- typedef PortableMetadataSnapshot Snap;
- typedef ignite::common::concurrent::SharedPointer<Snap> SPSnap;
- }
- }
-}
-
-#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater.h
deleted file mode 100644
index a734db7..0000000
--- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _IGNITE_IMPL_PORTABLE_METADATA_UPDATER
-#define _IGNITE_IMPL_PORTABLE_METADATA_UPDATER
-
-#include "ignite/ignite_error.h"
-#include "ignite/impl/portable/portable_metadata_snapshot.h"
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /**
- * Metadata updater interface.
- */
- class IGNITE_IMPORT_EXPORT PortableMetadataUpdater
- {
- public:
- /**
- * Destructor.
- */
- virtual ~PortableMetadataUpdater();
-
- /**
- * Update metadata using provided snapshot.
- *
- * @param snapshot Snapshot.
- * @param err Error.
- */
- virtual bool Update(Snap* snapshot, IgniteError* err) = 0;
- };
- }
- }
-}
-
-#endif
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/303d79eb/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater_impl.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater_impl.h b/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater_impl.h
deleted file mode 100644
index 832c2a3..0000000
--- a/modules/platforms/cpp/core/include/ignite/impl/portable/portable_metadata_updater_impl.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _IGNITE_IMPL_PORTABLE_METADATA_UPDATER_IMPL
-#define _IGNITE_IMPL_PORTABLE_METADATA_UPDATER_IMPL
-
-#include <ignite/common/exports.h>
-
-#include "ignite/impl/ignite_environment.h"
-#include "ignite/impl/portable/portable_metadata_updater.h"
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /**
- * Metadata updater implementation.
- */
- class IGNITE_IMPORT_EXPORT PortableMetadataUpdaterImpl : public PortableMetadataUpdater
- {
- public:
- /**
- * Constructor.
- *
- * @param env Environment.
- * @param javaRef Reference to Java object which is able to process metadata request.
- */
- PortableMetadataUpdaterImpl(ignite::common::concurrent::SharedPointer<IgniteEnvironment> env, jobject javaRef);
-
- /**
- * Destructor.
- */
- ~PortableMetadataUpdaterImpl();
-
- bool Update(Snap* snapshot, IgniteError* err);
- private:
- /** Environment. */
- ignite::common::concurrent::SharedPointer<IgniteEnvironment> env;
-
- /** Handle to Java object. */
- jobject javaRef;
-
- IGNITE_NO_COPY_ASSIGNMENT(PortableMetadataUpdaterImpl)
- };
- }
- }
-}
-
-#endif
\ No newline at end of file