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/09/22 08:39:48 UTC
[02/28] ignite git commit: IGNITE-1513: Moved CPP.
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/ignite_environment.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/ignite_environment.cpp b/modules/platform/src/main/cpp/core/src/impl/ignite_environment.cpp
deleted file mode 100644
index 8fb1a02..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/ignite_environment.cpp
+++ /dev/null
@@ -1,167 +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.
- */
-
-#include "ignite/impl/portable/portable_reader_impl.h"
-#include "ignite/impl/ignite_environment.h"
-#include "ignite/portable/portable.h"
-
-using namespace ignite::common::concurrent;
-using namespace ignite::common::java;
-using namespace ignite::impl::interop;
-using namespace ignite::impl::portable;
-using namespace ignite::portable;
-
-namespace ignite
-{
- namespace impl
- {
- /**
- * OnStart callback.
- *
- * @param target Target environment.
- * @param proc Processor instance (not used for now).
- * @param memPtr Memory pointer.
- */
- void IGNITE_CALL OnStart(void* target, void* proc, long long memPtr)
- {
- SharedPointer<IgniteEnvironment>* ptr = static_cast<SharedPointer<IgniteEnvironment>*>(target);
-
- ptr->Get()->OnStartCallback(memPtr);
- }
-
- /**
- * OnStop callback.
- *
- * @param target Target environment.
- */
- void IGNITE_CALL OnStop(void* target)
- {
- SharedPointer<IgniteEnvironment>* ptr = static_cast<SharedPointer<IgniteEnvironment>*>(target);
-
- delete ptr;
- }
-
- IgniteEnvironment::IgniteEnvironment() : ctx(SharedPointer<JniContext>()), latch(new SingleLatch), name(NULL),
- metaMgr(new PortableMetadataManager())
- {
- // No-op.
- }
-
- IgniteEnvironment::~IgniteEnvironment()
- {
- delete latch;
-
- if (name)
- delete name;
-
- delete metaMgr;
- }
-
- JniHandlers IgniteEnvironment::GetJniHandlers(SharedPointer<IgniteEnvironment>* target)
- {
- JniHandlers hnds = JniHandlers();
-
- hnds.target = target;
-
- hnds.onStart = OnStart;
- hnds.onStop = OnStop;
-
- hnds.error = NULL;
-
- return hnds;
- }
-
- void IgniteEnvironment::Initialize(SharedPointer<JniContext> ctx)
- {
- this->ctx = ctx;
-
- latch->CountDown();
- }
-
- char* IgniteEnvironment::InstanceName()
- {
- return name;
- }
-
- JniContext* IgniteEnvironment::Context()
- {
- return ctx.Get();
- }
-
- SharedPointer<InteropMemory> IgniteEnvironment::AllocateMemory()
- {
- SharedPointer<InteropMemory> ptr(new InteropUnpooledMemory(1024));
-
- return ptr;
- }
-
- SharedPointer<InteropMemory> IgniteEnvironment::AllocateMemory(int32_t cap)
- {
- SharedPointer<InteropMemory> ptr(new InteropUnpooledMemory(cap));
-
- return ptr;
- }
-
- SharedPointer<InteropMemory> IgniteEnvironment::GetMemory(int64_t memPtr)
- {
- int8_t* memPtr0 = reinterpret_cast<int8_t*>(memPtr);
-
- int32_t flags = InteropMemory::Flags(memPtr0);
-
- if (InteropMemory::IsExternal(flags))
- {
- SharedPointer<InteropMemory> ptr(new InteropExternalMemory(memPtr0));
-
- return ptr;
- }
- else
- {
- SharedPointer<InteropMemory> ptr(new InteropUnpooledMemory(memPtr0));
-
- return ptr;
- }
- }
-
- PortableMetadataManager* IgniteEnvironment::GetMetadataManager()
- {
- return metaMgr;
- }
-
- void IgniteEnvironment::OnStartCallback(long long memPtr)
- {
- InteropExternalMemory mem(reinterpret_cast<int8_t*>(memPtr));
- InteropInputStream stream(&mem);
-
- PortableReaderImpl reader(&stream);
-
- int32_t nameLen = reader.ReadString(NULL, 0);
-
- if (nameLen >= 0)
- {
- name = new char[nameLen + 1];
- reader.ReadString(name, nameLen + 1);
- }
- else
- name = NULL;
- }
- }
-}
-
-
-
-
-
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/ignite_impl.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/ignite_impl.cpp b/modules/platform/src/main/cpp/core/src/impl/ignite_impl.cpp
deleted file mode 100644
index 1aad309..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/ignite_impl.cpp
+++ /dev/null
@@ -1,42 +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.
- */
-
-#include "ignite/impl/ignite_impl.h"
-
-using namespace ignite::common::concurrent;
-using namespace ignite::common::java;
-
-namespace ignite
-{
- namespace impl
- {
- IgniteImpl::IgniteImpl(SharedPointer<IgniteEnvironment> env, jobject javaRef) : env(env), javaRef(javaRef)
- {
- // No-op.
- }
-
- IgniteImpl::~IgniteImpl()
- {
- JniContext::Release(javaRef);
- }
-
- char* IgniteImpl::GetName()
- {
- return env.Get()->InstanceName();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/interop/interop_input_stream.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/interop/interop_input_stream.cpp b/modules/platform/src/main/cpp/core/src/impl/interop/interop_input_stream.cpp
deleted file mode 100644
index 72340ee..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/interop/interop_input_stream.cpp
+++ /dev/null
@@ -1,215 +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.
- */
-
-#include <cstring>
-
-#include "ignite/impl/interop/interop_input_stream.h"
-#include "ignite/ignite_error.h"
-
-/**
- * Common macro to read a single value.
- */
-#define IGNITE_INTEROP_IN_READ(type, len) { \
- EnsureEnoughData(len); \
- type res = *reinterpret_cast<type*>(data + pos); \
- Shift(len); \
- return res; \
-}
-
-/**
- * Common macro to read an array.
- */
-#define IGNITE_INTEROP_IN_READ_ARRAY(len, shift) { \
- CopyAndShift(reinterpret_cast<int8_t*>(res), 0, len << shift); \
-}
-
-namespace ignite
-{
- namespace impl
- {
- namespace interop
- {
- union PortableInt32Float
- {
- int32_t i;
- float f;
- };
-
- union PortableInt64Double
- {
- int64_t i;
- double d;
- };
-
- InteropInputStream::InteropInputStream(InteropMemory* mem)
- {
- this->mem = mem;
-
- data = mem->Data();
- len = mem->Length();
- pos = 0;
- }
-
- int8_t InteropInputStream::ReadInt8()
- {
- IGNITE_INTEROP_IN_READ(int8_t, 1);
- }
-
- void InteropInputStream::ReadInt8Array(int8_t* const res, const int32_t len)
- {
- IGNITE_INTEROP_IN_READ_ARRAY(len, 0);
- }
-
- bool InteropInputStream::ReadBool()
- {
- return ReadInt8() == 1;
- }
-
- void InteropInputStream::ReadBoolArray(bool* const res, const int32_t len)
- {
- for (int i = 0; i < len; i++)
- *(res + i) = ReadBool();
- }
-
- int16_t InteropInputStream::ReadInt16()
- {
- IGNITE_INTEROP_IN_READ(int16_t, 2);
- }
-
- void InteropInputStream::ReadInt16Array(int16_t* const res, const int32_t len)
- {
- IGNITE_INTEROP_IN_READ_ARRAY(len, 1);
- }
-
- uint16_t InteropInputStream::ReadUInt16()
- {
- IGNITE_INTEROP_IN_READ(uint16_t, 2);
- }
-
- void InteropInputStream::ReadUInt16Array(uint16_t* const res, const int32_t len)
- {
- IGNITE_INTEROP_IN_READ_ARRAY(len, 1);
- }
-
- int32_t InteropInputStream::ReadInt32()
- {
- IGNITE_INTEROP_IN_READ(int32_t, 4);
- }
-
- int32_t InteropInputStream::ReadInt32(int32_t pos)
- {
- int delta = pos + 4 - this->pos;
-
- if (delta > 0)
- EnsureEnoughData(delta);
-
- return *reinterpret_cast<int32_t*>(data + pos);
- }
-
- void InteropInputStream::ReadInt32Array(int32_t* const res, const int32_t len)
- {
- IGNITE_INTEROP_IN_READ_ARRAY(len, 2);
- }
-
- int64_t InteropInputStream::ReadInt64()
- {
- IGNITE_INTEROP_IN_READ(int64_t, 8);
- }
-
- void InteropInputStream::ReadInt64Array(int64_t* const res, const int32_t len)
- {
- IGNITE_INTEROP_IN_READ_ARRAY(len, 3);
- }
-
- float InteropInputStream::ReadFloat()
- {
- PortableInt32Float u;
-
- u.i = ReadInt32();
-
- return u.f;
- }
-
- void InteropInputStream::ReadFloatArray(float* const res, const int32_t len)
- {
- IGNITE_INTEROP_IN_READ_ARRAY(len, 2);
- }
-
- double InteropInputStream::ReadDouble()
- {
- PortableInt64Double u;
-
- u.i = ReadInt64();
-
- return u.d;
- }
-
- void InteropInputStream::ReadDoubleArray(double* const res, const int32_t len)
- {
- IGNITE_INTEROP_IN_READ_ARRAY(len, 3);
- }
-
- int32_t InteropInputStream::Remaining()
- {
- return len - pos;
- }
-
- int32_t InteropInputStream::Position()
- {
- return pos;
- }
-
- void InteropInputStream::Position(int32_t pos)
- {
- if (pos > len) {
- IGNITE_ERROR_FORMATTED_3(IgniteError::IGNITE_ERR_MEMORY, "Requested input stream position is out of bounds",
- "memPtr", mem->PointerLong(), "len", len, "pos", pos);
- }
-
- this->pos = pos;
- }
-
- void InteropInputStream::Synchronize()
- {
- data = mem->Data();
- len = mem->Length();
- }
-
- void InteropInputStream::EnsureEnoughData(int32_t cnt)
- {
- if (len - pos < cnt) {
- IGNITE_ERROR_FORMATTED_4(IgniteError::IGNITE_ERR_MEMORY, "Not enough data in the stream",
- "memPtr", mem->PointerLong(), "len", len, "pos", pos, "requested", cnt);
- }
- }
-
- void InteropInputStream::CopyAndShift(int8_t* dest, int32_t off, int32_t cnt)
- {
- EnsureEnoughData(cnt);
-
- memcpy(dest + off, data + pos, cnt);
-
- Shift(cnt);
- }
-
- void InteropInputStream::Shift(int32_t cnt)
- {
- pos += cnt;
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/interop/interop_memory.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/interop/interop_memory.cpp b/modules/platform/src/main/cpp/core/src/impl/interop/interop_memory.cpp
deleted file mode 100644
index 05ba8b6..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/interop/interop_memory.cpp
+++ /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.
- */
-
-#include <ignite/common/java.h>
-
-#include "ignite/impl/interop/interop_memory.h"
-#include "ignite/ignite_error.h"
-
-using namespace ignite::common::java;
-
-namespace ignite
-{
- namespace impl
- {
- namespace interop
- {
- int8_t* InteropMemory::Data(int8_t* memPtr)
- {
- return reinterpret_cast<int8_t*>(*reinterpret_cast<int64_t*>(memPtr));
- }
-
- void InteropMemory::Data(int8_t* memPtr, void* ptr)
- {
- *reinterpret_cast<int64_t*>(memPtr) = reinterpret_cast<int64_t>(ptr);
- }
-
- int32_t InteropMemory::Capacity(int8_t* memPtr)
- {
- return *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_CAP);
- }
-
- void InteropMemory::Capacity(int8_t* memPtr, int32_t val)
- {
- *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_CAP) = val;
- }
-
- int32_t InteropMemory::Length(int8_t* memPtr)
- {
- return *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_LEN);
- }
-
- void InteropMemory::Length(int8_t* memPtr, int32_t val)
- {
- *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_LEN) = val;
- }
-
- int32_t InteropMemory::Flags(int8_t* memPtr)
- {
- return *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_FLAGS);
- }
-
- void InteropMemory::Flags(int8_t* memPtr, int32_t val)
- {
- *reinterpret_cast<int32_t*>(memPtr + IGNITE_MEM_HDR_OFF_FLAGS) = val;
- }
-
- bool InteropMemory::IsExternal(int8_t* memPtr)
- {
- return IsExternal(Flags(memPtr));
- }
-
- bool InteropMemory::IsExternal(int32_t flags)
- {
- return (flags & IGNITE_MEM_FLAG_EXT) != IGNITE_MEM_FLAG_EXT;
- }
-
- bool InteropMemory::IsPooled(int8_t* memPtr)
- {
- return IsPooled(Flags(memPtr));
- }
-
- bool InteropMemory::IsPooled(int32_t flags)
- {
- return (flags & IGNITE_MEM_FLAG_POOLED) != 0;
- }
-
- bool InteropMemory::IsAcquired(int8_t* memPtr)
- {
- return IsAcquired(Flags(memPtr));
- }
-
- bool InteropMemory::IsAcquired(int32_t flags)
- {
- return (flags & IGNITE_MEM_FLAG_ACQUIRED) != 0;
- }
-
- int8_t* InteropMemory::Pointer()
- {
- return memPtr;
- }
-
- int64_t InteropMemory::PointerLong()
- {
- return reinterpret_cast<int64_t>(memPtr);
- }
-
- int8_t* InteropMemory::Data()
- {
- return Data(memPtr);
- }
-
- int32_t InteropMemory::Capacity()
- {
- return Capacity(memPtr);
- }
-
- int32_t InteropMemory::Length()
- {
- return Length(memPtr);
- }
-
- void InteropMemory::Length(int32_t val)
- {
- Length(memPtr, val);
- }
-
- InteropUnpooledMemory::InteropUnpooledMemory(int32_t cap)
- {
- memPtr = static_cast<int8_t*>(malloc(IGNITE_MEM_HDR_LEN));
-
- Data(memPtr, malloc(cap));
- Capacity(memPtr, cap);
- Length(memPtr, 0);
- Flags(memPtr, IGNITE_MEM_FLAG_EXT);
-
- owning = true;
- }
-
- InteropUnpooledMemory::InteropUnpooledMemory(int8_t* memPtr)
- {
- this->memPtr = memPtr;
- this->owning = false;
- }
-
- InteropUnpooledMemory::~InteropUnpooledMemory()
- {
- if (owning) {
- free(Data());
- free(memPtr);
- }
- }
-
- void InteropUnpooledMemory::Reallocate(int32_t cap)
- {
- int doubledCap = Capacity() << 1;
-
- if (doubledCap > cap)
- cap = doubledCap;
-
- Data(memPtr, realloc(Data(memPtr), cap));
- Capacity(memPtr, cap);
- }
-
- InteropExternalMemory::InteropExternalMemory(int8_t* memPtr)
- {
- this->memPtr = memPtr;
- }
-
- void InteropExternalMemory::Reallocate(int32_t cap)
- {
- if (JniContext::Reallocate(reinterpret_cast<int64_t>(memPtr), cap) == -1) {
- IGNITE_ERROR_FORMATTED_2(IgniteError::IGNITE_ERR_MEMORY, "Failed to reallocate external memory",
- "memPtr", PointerLong(), "requestedCapacity", cap)
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/interop/interop_output_stream.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/interop/interop_output_stream.cpp b/modules/platform/src/main/cpp/core/src/impl/interop/interop_output_stream.cpp
deleted file mode 100644
index ecdfd42..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/interop/interop_output_stream.cpp
+++ /dev/null
@@ -1,215 +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.
- */
-
-#include <cstring>
-
-#include "ignite/impl/interop/interop_output_stream.h"
-#include "ignite/ignite_error.h"
-
-/**
- * Common macro to write a single value.
- */
-#define IGNITE_INTEROP_OUT_WRITE(val, type, len) { \
- EnsureCapacity(pos + len); \
- *reinterpret_cast<type*>(data + pos) = val; \
- Shift(len); \
-}
-
-/**
- * Common macro to write an array.
- */
-#define IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len) { \
- CopyAndShift(reinterpret_cast<const int8_t*>(val), 0, len); \
-}
-
-namespace ignite
-{
- namespace impl
- {
- namespace interop
- {
- union PortableFloatInt32
- {
- float f;
- int32_t i;
- };
-
- union PortableDoubleInt64
- {
- double d;
- int64_t i;
- };
-
- InteropOutputStream::InteropOutputStream(InteropMemory* mem)
- {
- this->mem = mem;
-
- data = mem->Data();
- cap = mem->Capacity();
- pos = 0;
- }
-
- void InteropOutputStream::WriteInt8(const int8_t val)
- {
- IGNITE_INTEROP_OUT_WRITE(val, int8_t, 1);
- }
-
- void InteropOutputStream::WriteInt8(const int8_t val, const int32_t pos)
- {
- EnsureCapacity(pos + 1);
-
- *(data + pos) = val;
- }
-
- void InteropOutputStream::WriteInt8Array(const int8_t* val, const int32_t len)
- {
- IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len);
- }
-
- void InteropOutputStream::WriteBool(const bool val)
- {
- WriteInt8(val ? 1 : 0);
- }
-
- void InteropOutputStream::WriteBoolArray(const bool* val, const int32_t len)
- {
- for (int i = 0; i < len; i++)
- WriteBool(*(val + i));
- }
-
- void InteropOutputStream::WriteInt16(const int16_t val)
- {
- IGNITE_INTEROP_OUT_WRITE(val, int16_t, 2);
- }
-
- void InteropOutputStream::WriteInt16Array(const int16_t* val, const int32_t len)
- {
- IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 1);
- }
-
- void InteropOutputStream::WriteUInt16(const uint16_t val)
- {
- IGNITE_INTEROP_OUT_WRITE(val, uint16_t, 2);
- }
-
- void InteropOutputStream::WriteUInt16Array(const uint16_t* val, const int32_t len)
- {
- IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 1);
- }
-
- void InteropOutputStream::WriteInt32(const int32_t val)
- {
- IGNITE_INTEROP_OUT_WRITE(val, int32_t, 4);
- }
-
- void InteropOutputStream::WriteInt32(const int32_t pos, const int32_t val)
- {
- EnsureCapacity(pos + 4);
-
- *reinterpret_cast<int32_t*>(data + pos) = val;
- }
-
- void InteropOutputStream::WriteInt32Array(const int32_t* val, const int32_t len)
- {
- IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 2);
- }
-
- void InteropOutputStream::WriteInt64(const int64_t val)
- {
- IGNITE_INTEROP_OUT_WRITE(val, int64_t, 8);
- }
-
- void InteropOutputStream::WriteInt64Array(const int64_t* val, const int32_t len)
- {
- IGNITE_INTEROP_OUT_WRITE_ARRAY(val, len << 3);
- }
-
- void InteropOutputStream::WriteFloat(const float val)
- {
- PortableFloatInt32 u;
-
- u.f = val;
-
- WriteInt32(u.i);
- }
-
- void InteropOutputStream::WriteFloatArray(const float* val, const int32_t len)
- {
- for (int i = 0; i < len; i++)
- WriteFloat(*(val + i));
- }
-
- void InteropOutputStream::WriteDouble(const double val)
- {
- PortableDoubleInt64 u;
-
- u.d = val;
-
- WriteInt64(u.i);
- }
-
- void InteropOutputStream::WriteDoubleArray(const double* val, const int32_t len)
- {
- for (int i = 0; i < len; i++)
- WriteDouble(*(val + i));
- }
-
- int32_t InteropOutputStream::Position()
- {
- return pos;
- }
-
- void InteropOutputStream::Position(const int32_t val)
- {
- EnsureCapacity(val);
-
- pos = val;
- }
-
- void InteropOutputStream::Synchronize()
- {
- mem->Length(pos);
- }
-
- void InteropOutputStream::EnsureCapacity(int32_t reqCap) {
- if (reqCap > cap) {
- int newCap = cap << 1;
-
- if (newCap < reqCap)
- newCap = reqCap;
-
- mem->Reallocate(newCap);
- data = mem->Data();
- cap = newCap;
- }
- }
-
- void InteropOutputStream::Shift(int32_t cnt) {
- pos += cnt;
- }
-
- void InteropOutputStream::CopyAndShift(const int8_t* src, int32_t off, int32_t len) {
- EnsureCapacity(pos + len);
-
- memcpy(data + pos, src + off, len);
-
- Shift(len);
- }
- }
- }
-}
-
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_handler.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_handler.cpp b/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_handler.cpp
deleted file mode 100644
index 5ca91dc..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_handler.cpp
+++ /dev/null
@@ -1,78 +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.
- */
-
-#include "ignite/impl/portable/portable_metadata_handler.h"
-
-using namespace ignite::common::concurrent;
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- PortableMetadataHandler::PortableMetadataHandler(SPSnap snap) : snap(snap), fieldIds(NULL), fields(NULL)
- {
- // No-op.
- }
-
- PortableMetadataHandler::~PortableMetadataHandler()
- {
- if (fieldIds)
- delete fieldIds;
-
- if (fields)
- delete fields;
- }
-
- void PortableMetadataHandler::OnFieldWritten(int32_t fieldId, std::string fieldName, int32_t fieldTypeId)
- {
- if (!snap.Get() || !snap.Get()->ContainsFieldId(fieldId))
- {
- if (!HasDifference())
- {
- fieldIds = new std::set<int32_t>();
- fields = new std::map<std::string, int32_t>();
- }
-
- fieldIds->insert(fieldId);
- (*fields)[fieldName] = fieldTypeId;
- }
- }
-
- SPSnap PortableMetadataHandler::GetSnapshot()
- {
- return snap;
- }
-
- bool PortableMetadataHandler::HasDifference()
- {
- return fieldIds ? true : false;
- }
-
- std::set<int32_t>* PortableMetadataHandler::GetFieldIds()
- {
- return fieldIds;
- }
-
- std::map<std::string, int32_t>* PortableMetadataHandler::GetFields()
- {
- return fields;
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_manager.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_manager.cpp b/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_manager.cpp
deleted file mode 100644
index 63e92a9..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_manager.cpp
+++ /dev/null
@@ -1,201 +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.
- */
-
-#include <ignite/common/concurrent.h>
-
-#include "ignite/impl/portable/portable_metadata_manager.h"
-
-using namespace ignite::common::concurrent;
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- PortableMetadataManager::PortableMetadataManager() :
- snapshots(SharedPointer<std::map<int32_t, SPSnap>>(new std::map<int32_t, SPSnap>)),
- pending(new std::vector<SPSnap>()),
- cs(new CriticalSection()),
- pendingVer(0), ver(0)
- {
- // No-op.
- }
-
- PortableMetadataManager::~PortableMetadataManager()
- {
- pending->erase(pending->begin(), pending->end());
-
- delete pending;
- delete cs;
- }
-
- SharedPointer<PortableMetadataHandler> PortableMetadataManager::GetHandler(int32_t typeId)
- {
- SharedPointer<std::map<int32_t, SPSnap>> snapshots0 = snapshots;
-
- SPSnap snapshot = (*snapshots0.Get())[typeId];
-
- return SharedPointer<PortableMetadataHandler>(new PortableMetadataHandler(snapshot));
- }
-
- void PortableMetadataManager::SubmitHandler(std::string typeName, int32_t typeId,
- PortableMetadataHandler* hnd)
- {
- Snap* snap = hnd->GetSnapshot().Get();
-
- // If this is the very first write of a class or difference exists,
- // we need to enqueue it for write.
- if (!snap || hnd->HasDifference())
- {
- std::set<int32_t>* newFieldIds = new std::set<int32_t>();
- std::map<std::string, int32_t>* newFields = new std::map<std::string, int32_t>();
-
- CopyFields(snap, newFieldIds, newFields);
-
- if (hnd->HasDifference())
- {
- std::set<int32_t>* diffFieldIds = hnd->GetFieldIds();
- std::map<std::string, int32_t>* diffFields = hnd->GetFields();
-
- for (std::set<int32_t>::iterator it = diffFieldIds->begin(); it != diffFieldIds->end(); ++it)
- newFieldIds->insert(*it);
-
- for (std::map<std::string, int32_t>::iterator it = diffFields->begin(); it != diffFields->end(); ++it)
- (*newFields)[it->first] = it->second;
- }
-
- Snap* diffSnap = new Snap(typeName, typeId, newFieldIds, newFields);
-
- cs->Enter();
-
- pending->push_back(SPSnap(diffSnap));
-
- pendingVer++;
-
- cs->Leave();
- }
- }
-
- int32_t PortableMetadataManager::GetVersion()
- {
- Memory::Fence();
-
- return ver;
- }
-
- bool PortableMetadataManager::IsUpdatedSince(int32_t oldVer)
- {
- Memory::Fence();
-
- return pendingVer > oldVer;
- }
-
- bool PortableMetadataManager::ProcessPendingUpdates(PortableMetadataUpdater* updater, IgniteError* err)
- {
- bool success = true; // Optimistically assume that all will be fine.
-
- cs->Enter();
-
- for (std::vector<SPSnap>::iterator it = pending->begin(); it != pending->end(); ++it)
- {
- Snap* pendingSnap = (*it).Get();
-
- if (updater->Update(pendingSnap, err))
- {
- // Perform copy-on-write update of snapshot collection.
- std::map<int32_t, SPSnap>* newSnapshots = new std::map<int32_t, SPSnap>();
-
- bool snapshotFound = false;
-
- for (std::map<int32_t, SPSnap>::iterator snapIt = snapshots.Get()->begin();
- snapIt != snapshots.Get()->end(); ++snapIt)
- {
- int32_t curTypeId = snapIt->first;
- Snap* curSnap = snapIt->second.Get();
-
- if (pendingSnap->GetTypeId() == curTypeId)
- {
- // Have to create snapshot with updated fields.
- std::set<int32_t>* newFieldIds = new std::set<int32_t>();
- std::map<std::string, int32_t>* newFields = new std::map<std::string, int32_t>();
-
- // Add old fields.
- CopyFields(curSnap, newFieldIds, newFields);
-
- // Add new fields.
- CopyFields(pendingSnap, newFieldIds, newFields);
-
- // Create new snapshot.
- Snap* newSnap = new Snap(pendingSnap->GetTypeName(), pendingSnap->GetTypeId(),
- newFieldIds, newFields);
-
- (*newSnapshots)[curTypeId] = SPSnap(newSnap);
-
- snapshotFound = true;
- }
- else
- (*newSnapshots)[curTypeId] = snapIt->second; // Just transfer exising snapshot.
- }
-
- // Handle situation when completely new snapshot is found.
- if (!snapshotFound)
- (*newSnapshots)[pendingSnap->GetTypeId()] = *it;
-
- snapshots = SharedPointer<std::map<int32_t, SPSnap>>(newSnapshots);
- }
- else
- {
- // Stop as we cannot move further.
- success = false;
-
- break;
- }
- }
-
- if (success)
- {
- pending->erase(pending->begin(), pending->end());
-
- ver = pendingVer;
- }
-
- cs->Leave();
-
- return success;
- }
-
- void PortableMetadataManager::CopyFields(Snap* snap, std::set<int32_t>* fieldIds,
- std::map<std::string, int32_t>* fields)
- {
- if (snap && snap->HasFields())
- {
- std::set<int32_t>* snapFieldIds = snap->GetFieldIds();
- std::map<std::string, int32_t>* snapFields = snap->GetFields();
-
- for (std::set<int32_t>::iterator oldIt = snapFieldIds->begin();
- oldIt != snapFieldIds->end(); ++oldIt)
- fieldIds->insert(*oldIt);
-
- for (std::map<std::string, int32_t>::iterator newFieldsIt = snapFields->begin();
- newFieldsIt != snapFields->end(); ++newFieldsIt)
- (*fields)[newFieldsIt->first] = newFieldsIt->second;
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_snapshot.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_snapshot.cpp b/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_snapshot.cpp
deleted file mode 100644
index 6ce5ab5..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_snapshot.cpp
+++ /dev/null
@@ -1,70 +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.
- */
-
-#include "ignite/impl/portable/portable_metadata_snapshot.h"
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- PortableMetadataSnapshot::PortableMetadataSnapshot(std::string typeName, int32_t typeId,
- std::set<int32_t>* fieldIds, std::map<std::string, int32_t>* fields) :
- typeName(typeName), typeId(typeId), fieldIds(fieldIds), fields(fields)
- {
- // No-op.
- }
-
- PortableMetadataSnapshot::~PortableMetadataSnapshot()
- {
- delete fieldIds;
- delete fields;
- }
-
- bool PortableMetadataSnapshot::ContainsFieldId(int32_t fieldId)
- {
- return fieldIds && fieldIds->count(fieldId) == 1;
- }
-
- std::string PortableMetadataSnapshot::GetTypeName()
- {
- return typeName;
- }
-
- int32_t PortableMetadataSnapshot::GetTypeId()
- {
- return typeId;
- }
-
- bool PortableMetadataSnapshot::HasFields()
- {
- return !fieldIds->empty();
- }
-
- std::set<int32_t>* PortableMetadataSnapshot::GetFieldIds()
- {
- return fieldIds;
- }
-
- std::map<std::string, int32_t>* PortableMetadataSnapshot::GetFields()
- {
- return fields;
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater.cpp b/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater.cpp
deleted file mode 100644
index 81c96d7..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater.cpp
+++ /dev/null
@@ -1,32 +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.
- */
-
-#include "ignite/impl/portable/portable_metadata_updater.h"
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- PortableMetadataUpdater::~PortableMetadataUpdater()
- {
- // No-op.
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater_impl.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater_impl.cpp b/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater_impl.cpp
deleted file mode 100644
index 07a1758..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/portable/portable_metadata_updater_impl.cpp
+++ /dev/null
@@ -1,94 +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.
- */
-
-#include "ignite/impl/portable/portable_metadata_updater_impl.h"
-#include "ignite/impl/interop/interop_output_stream.h"
-#include "ignite/impl/portable/portable_writer_impl.h"
-#include "ignite/portable/portable_raw_writer.h"
-
-using namespace ignite::common::concurrent;
-using namespace ignite::common::java;
-using namespace ignite::impl;
-using namespace ignite::impl::interop;
-using namespace ignite::portable;
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- /** Operation: Clear. */
- const int32_t OP_METADATA = -1;
-
- PortableMetadataUpdaterImpl::PortableMetadataUpdaterImpl(SharedPointer<IgniteEnvironment> env,
- jobject javaRef) : env(env), javaRef(javaRef)
- {
- // No-op.
- }
-
- PortableMetadataUpdaterImpl::~PortableMetadataUpdaterImpl()
- {
- // No-op.
- }
-
- bool PortableMetadataUpdaterImpl::Update(Snap* snap, IgniteError* err)
- {
- JniErrorInfo jniErr;
-
- SharedPointer<InteropMemory> mem = env.Get()->AllocateMemory();
-
- InteropOutputStream out(mem.Get());
- PortableWriterImpl writer(&out, NULL);
- PortableRawWriter rawWriter(&writer);
-
- // We always pass only one meta at a time in current implementation for simplicity.
- rawWriter.WriteInt32(1);
-
- rawWriter.WriteInt32(snap->GetTypeId());
- rawWriter.WriteString(snap->GetTypeName());
- rawWriter.WriteString(NULL); // Affinity key is not supported for now.
-
- if (snap->HasFields())
- {
- std::map<std::string, int32_t>* fields = snap->GetFields();
-
- rawWriter.WriteInt32(static_cast<int32_t>(fields->size()));
-
- for (std::map<std::string, int32_t>::iterator it = fields->begin(); it != fields->end(); ++it)
- {
- rawWriter.WriteString(it->first);
- rawWriter.WriteInt32(it->second);
- }
- }
- else
- rawWriter.WriteInt32(0);
-
- out.Synchronize();
-
- long long res = env.Get()->Context()->TargetInStreamOutLong(javaRef, OP_METADATA, mem.Get()->PointerLong(), &jniErr);
-
- IgniteError::SetError(jniErr.code, jniErr.errCls, jniErr.errMsg, err);
-
- if (jniErr.code == IGNITE_JNI_ERR_SUCCESS)
- return res == 1;
- else
- return false;
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/portable/portable_reader_impl.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/portable/portable_reader_impl.cpp b/modules/platform/src/main/cpp/core/src/impl/portable/portable_reader_impl.cpp
deleted file mode 100644
index 753ec25..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/portable/portable_reader_impl.cpp
+++ /dev/null
@@ -1,683 +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.
- */
-
-#include "ignite/impl/interop/interop.h"
-#include "ignite/impl/portable/portable_common.h"
-#include "ignite/impl/portable/portable_id_resolver.h"
-#include "ignite/impl/portable/portable_reader_impl.h"
-#include "ignite/impl/portable/portable_utils.h"
-#include "ignite/portable/portable_type.h"
-#include "ignite/ignite_error.h"
-
-using namespace ignite::impl::interop;
-using namespace ignite::impl::portable;
-using namespace ignite::portable;
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- PortableReaderImpl::PortableReaderImpl(InteropInputStream* stream, PortableIdResolver* idRslvr,
- int32_t pos, bool usrType, int32_t typeId, int32_t hashCode, int32_t len, int32_t rawOff) :
- stream(stream), idRslvr(idRslvr), pos(pos), usrType(usrType), typeId(typeId),
- hashCode(hashCode), len(len), rawOff(rawOff), rawMode(false),
- elemIdGen(0), elemId(0), elemCnt(-1), elemRead(0)
- {
- // No-op.
- }
-
- PortableReaderImpl::PortableReaderImpl(InteropInputStream* stream) :
- stream(stream), idRslvr(NULL), pos(0), usrType(false), typeId(0), hashCode(0),
- len(0), rawOff(0), rawMode(true),
- elemIdGen(0), elemId(0), elemCnt(-1), elemRead(0)
- {
- // No-op.
- }
-
- int8_t PortableReaderImpl::ReadInt8()
- {
- return ReadRaw<int8_t>(PortableUtils::ReadInt8);
- }
-
- int32_t PortableReaderImpl::ReadInt8Array(int8_t* res, const int32_t len)
- {
- return ReadRawArray<int8_t>(res, len, PortableUtils::ReadInt8Array, IGNITE_TYPE_ARRAY_BYTE);
- }
-
- int8_t PortableReaderImpl::ReadInt8(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadInt8, IGNITE_TYPE_BYTE, static_cast<int8_t>(0));
- }
-
- int32_t PortableReaderImpl::ReadInt8Array(const char* fieldName, int8_t* res, const int32_t len)
- {
- return ReadArray<int8_t>(fieldName, res, len,PortableUtils::ReadInt8Array, IGNITE_TYPE_ARRAY_BYTE);
- }
-
- bool PortableReaderImpl::ReadBool()
- {
- return ReadRaw<bool>(PortableUtils::ReadBool);
- }
-
- int32_t PortableReaderImpl::ReadBoolArray(bool* res, const int32_t len)
- {
- return ReadRawArray<bool>(res, len, PortableUtils::ReadBoolArray, IGNITE_TYPE_ARRAY_BOOL);
- }
-
- bool PortableReaderImpl::ReadBool(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadBool, IGNITE_TYPE_BOOL, static_cast<bool>(0));
- }
-
- int32_t PortableReaderImpl::ReadBoolArray(const char* fieldName, bool* res, const int32_t len)
- {
- return ReadArray<bool>(fieldName, res, len,PortableUtils::ReadBoolArray, IGNITE_TYPE_ARRAY_BOOL);
- }
-
- int16_t PortableReaderImpl::ReadInt16()
- {
- return ReadRaw<int16_t>(PortableUtils::ReadInt16);
- }
-
- int32_t PortableReaderImpl::ReadInt16Array(int16_t* res, const int32_t len)
- {
- return ReadRawArray<int16_t>(res, len, PortableUtils::ReadInt16Array, IGNITE_TYPE_ARRAY_SHORT);
- }
-
- int16_t PortableReaderImpl::ReadInt16(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadInt16, IGNITE_TYPE_SHORT, static_cast<int16_t>(0));
- }
-
- int32_t PortableReaderImpl::ReadInt16Array(const char* fieldName, int16_t* res, const int32_t len)
- {
- return ReadArray<int16_t>(fieldName, res, len, PortableUtils::ReadInt16Array, IGNITE_TYPE_ARRAY_SHORT);
- }
-
- uint16_t PortableReaderImpl::ReadUInt16()
- {
- return ReadRaw<uint16_t>(PortableUtils::ReadUInt16);
- }
-
- int32_t PortableReaderImpl::ReadUInt16Array(uint16_t* res, const int32_t len)
- {
- return ReadRawArray<uint16_t>(res, len, PortableUtils::ReadUInt16Array, IGNITE_TYPE_ARRAY_CHAR);
- }
-
- uint16_t PortableReaderImpl::ReadUInt16(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadUInt16, IGNITE_TYPE_CHAR, static_cast<uint16_t>(0));
- }
-
- int32_t PortableReaderImpl::ReadUInt16Array(const char* fieldName, uint16_t* res, const int32_t len)
- {
- return ReadArray<uint16_t>(fieldName, res, len,PortableUtils::ReadUInt16Array, IGNITE_TYPE_ARRAY_CHAR);
- }
-
- int32_t PortableReaderImpl::ReadInt32()
- {
- return ReadRaw<int32_t>(PortableUtils::ReadInt32);
- }
-
- int32_t PortableReaderImpl::ReadInt32Array(int32_t* res, const int32_t len)
- {
- return ReadRawArray<int32_t>(res, len, PortableUtils::ReadInt32Array, IGNITE_TYPE_ARRAY_INT);
- }
-
- int32_t PortableReaderImpl::ReadInt32(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadInt32, IGNITE_TYPE_INT, static_cast<int32_t>(0));
- }
-
- int32_t PortableReaderImpl::ReadInt32Array(const char* fieldName, int32_t* res, const int32_t len)
- {
- return ReadArray<int32_t>(fieldName, res, len,PortableUtils::ReadInt32Array, IGNITE_TYPE_ARRAY_INT);
- }
-
- int64_t PortableReaderImpl::ReadInt64()
- {
- return ReadRaw<int64_t>(PortableUtils::ReadInt64);
- }
-
- int32_t PortableReaderImpl::ReadInt64Array(int64_t* res, const int32_t len)
- {
- return ReadRawArray<int64_t>(res, len, PortableUtils::ReadInt64Array, IGNITE_TYPE_ARRAY_LONG);
- }
-
- int64_t PortableReaderImpl::ReadInt64(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadInt64, IGNITE_TYPE_LONG, static_cast<int64_t>(0));
- }
-
- int32_t PortableReaderImpl::ReadInt64Array(const char* fieldName, int64_t* res, const int32_t len)
- {
- return ReadArray<int64_t>(fieldName, res, len,PortableUtils::ReadInt64Array, IGNITE_TYPE_ARRAY_LONG);
- }
-
- float PortableReaderImpl::ReadFloat()
- {
- return ReadRaw<float>(PortableUtils::ReadFloat);
- }
-
- int32_t PortableReaderImpl::ReadFloatArray(float* res, const int32_t len)
- {
- return ReadRawArray<float>(res, len, PortableUtils::ReadFloatArray, IGNITE_TYPE_ARRAY_FLOAT);
- }
-
- float PortableReaderImpl::ReadFloat(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadFloat, IGNITE_TYPE_FLOAT, static_cast<float>(0));
- }
-
- int32_t PortableReaderImpl::ReadFloatArray(const char* fieldName, float* res, const int32_t len)
- {
- return ReadArray<float>(fieldName, res, len,PortableUtils::ReadFloatArray, IGNITE_TYPE_ARRAY_FLOAT);
- }
-
- double PortableReaderImpl::ReadDouble()
- {
- return ReadRaw<double>(PortableUtils::ReadDouble);
- }
-
- int32_t PortableReaderImpl::ReadDoubleArray(double* res, const int32_t len)
- {
- return ReadRawArray<double>(res, len, PortableUtils::ReadDoubleArray, IGNITE_TYPE_ARRAY_DOUBLE);
- }
-
- double PortableReaderImpl::ReadDouble(const char* fieldName)
- {
- return Read(fieldName, PortableUtils::ReadDouble, IGNITE_TYPE_DOUBLE, static_cast<double>(0));
- }
-
- int32_t PortableReaderImpl::ReadDoubleArray(const char* fieldName, double* res, const int32_t len)
- {
- return ReadArray<double>(fieldName, res, len,PortableUtils::ReadDoubleArray, IGNITE_TYPE_ARRAY_DOUBLE);
- }
-
- Guid PortableReaderImpl::ReadGuid()
- {
- CheckRawMode(true);
- CheckSingleMode(true);
-
- return ReadNullable(stream, PortableUtils::ReadGuid, IGNITE_TYPE_UUID);
- }
-
- int32_t PortableReaderImpl::ReadGuidArray(Guid* res, const int32_t len)
- {
- CheckRawMode(true);
- CheckSingleMode(true);
-
- return ReadArrayInternal<Guid>(res, len, stream, ReadGuidArrayInternal, IGNITE_TYPE_ARRAY_UUID);
- }
-
- Guid PortableReaderImpl::ReadGuid(const char* fieldName)
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
- int32_t fieldLen = SeekField(fieldId);
-
- if (fieldLen > 0)
- return ReadNullable(stream, PortableUtils::ReadGuid, IGNITE_TYPE_UUID);
-
- return Guid();
- }
-
- int32_t PortableReaderImpl::ReadGuidArray(const char* fieldName, Guid* res, const int32_t len)
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- int32_t pos = stream->Position();
-
- int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
- int32_t fieldLen = SeekField(fieldId);
-
- if (fieldLen > 0) {
- int32_t realLen = ReadArrayInternal<Guid>(res, len, stream, ReadGuidArrayInternal, IGNITE_TYPE_ARRAY_UUID);
-
- // If actual read didn't occur return to initial position so that we do not perform
- // N jumps to find the field again, where N is total amount of fields.
- if (realLen != -1 && (!res || realLen > len))
- stream->Position(pos);
-
- return realLen;
- }
-
- return -1;
- }
-
- void PortableReaderImpl::ReadGuidArrayInternal(InteropInputStream* stream, Guid* res, const int32_t len)
- {
- for (int i = 0; i < len; i++)
- *(res + i) = ReadNullable<Guid>(stream, PortableUtils::ReadGuid, IGNITE_TYPE_UUID);
- }
-
- int32_t PortableReaderImpl::ReadString(char* res, const int32_t len)
- {
- CheckRawMode(true);
- CheckSingleMode(true);
-
- return ReadStringInternal(res, len);
- }
-
- int32_t PortableReaderImpl::ReadString(const char* fieldName, char* res, const int32_t len)
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- int32_t pos = stream->Position();
-
- int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
- int32_t fieldLen = SeekField(fieldId);
-
- if (fieldLen > 0) {
- int32_t realLen = ReadStringInternal(res, len);
-
- // If actual read didn't occur return to initial position so that we do not perform
- // N jumps to find the field again, where N is total amount of fields.
- if (realLen != -1 && (!res || realLen > len))
- stream->Position(pos);
-
- return realLen;
- }
-
- return -1;
- }
-
- int32_t PortableReaderImpl::ReadStringArray(int32_t* size)
- {
- return StartContainerSession(true, IGNITE_TYPE_ARRAY_STRING, size);
- }
-
- int32_t PortableReaderImpl::ReadStringArray(const char* fieldName, int32_t* size)
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
- int32_t fieldLen = SeekField(fieldId);
-
- if (fieldLen > 0)
- return StartContainerSession(false, IGNITE_TYPE_ARRAY_STRING, size);
- else {
- *size = -1;
-
- return ++elemIdGen;
- }
- }
-
- int32_t PortableReaderImpl::ReadStringElement(int32_t id, char* res, const int32_t len)
- {
- CheckSession(id);
-
- int32_t posBefore = stream->Position();
-
- int32_t realLen = ReadStringInternal(res, len);
-
- int32_t posAfter = stream->Position();
-
- if (posAfter > posBefore && ++elemRead == elemCnt) {
- elemId = 0;
- elemCnt = -1;
- elemRead = 0;
- }
-
- return realLen;
- }
-
- int32_t PortableReaderImpl::ReadStringInternal(char* res, const int32_t len)
- {
- int8_t hdr = stream->ReadInt8();
-
- if (hdr == IGNITE_TYPE_STRING) {
- bool utf8Mode = stream->ReadBool();
- int32_t realLen = stream->ReadInt32();
-
- if (res && len >= realLen) {
- if (utf8Mode)
- {
- for (int i = 0; i < realLen; i++)
- *(res + i) = static_cast<char>(stream->ReadInt8());
- }
- else
- {
- for (int i = 0; i < realLen; i++)
- *(res + i) = static_cast<char>(stream->ReadUInt16());
- }
-
- if (len > realLen)
- *(res + realLen) = 0; // Set NULL terminator if possible.
- }
- else
- stream->Position(stream->Position() - 6);
-
- return realLen;
- }
- else if (hdr != IGNITE_HDR_NULL)
- ThrowOnInvalidHeader(IGNITE_TYPE_ARRAY, hdr);
-
- return -1;
- }
-
- int32_t PortableReaderImpl::ReadArray(int32_t* size)
- {
- return StartContainerSession(true, IGNITE_TYPE_ARRAY, size);
- }
-
- int32_t PortableReaderImpl::ReadArray(const char* fieldName, int32_t* size)
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
- int32_t fieldLen = SeekField(fieldId);
-
- if (fieldLen > 0)
- return StartContainerSession(false, IGNITE_TYPE_ARRAY, size);
- else {
- *size = -1;
-
- return ++elemIdGen;
- }
- }
-
- int32_t PortableReaderImpl::ReadCollection(CollectionType* typ, int32_t* size)
- {
- int32_t id = StartContainerSession(true, IGNITE_TYPE_COLLECTION, size);
-
- if (*size == -1)
- *typ = IGNITE_COLLECTION_UNDEFINED;
- else
- *typ = static_cast<CollectionType>(stream->ReadInt8());
-
- return id;
- }
-
- int32_t PortableReaderImpl::ReadCollection(const char* fieldName, CollectionType* typ, int32_t* size)
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
- int32_t fieldLen = SeekField(fieldId);
-
- if (fieldLen > 0)
- {
- int32_t id = StartContainerSession(false, IGNITE_TYPE_COLLECTION, size);
-
- if (*size == -1)
- *typ = IGNITE_COLLECTION_UNDEFINED;
- else
- *typ = static_cast<CollectionType>(stream->ReadInt8());
-
- return id;
- }
- else {
- *typ = IGNITE_COLLECTION_UNDEFINED;
- *size = -1;
-
- return ++elemIdGen;
- }
- }
-
- int32_t PortableReaderImpl::ReadMap(MapType* typ, int32_t* size)
- {
- int32_t id = StartContainerSession(true, IGNITE_TYPE_MAP, size);
-
- if (*size == -1)
- *typ = IGNITE_MAP_UNDEFINED;
- else
- *typ = static_cast<MapType>(stream->ReadInt8());
-
- return id;
- }
-
- int32_t PortableReaderImpl::ReadMap(const char* fieldName, MapType* typ, int32_t* size)
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- int32_t fieldId = idRslvr->GetFieldId(typeId, fieldName);
- int32_t fieldLen = SeekField(fieldId);
-
- if (fieldLen > 0)
- {
- int32_t id = StartContainerSession(false, IGNITE_TYPE_MAP, size);
-
- if (*size == -1)
- *typ = IGNITE_MAP_UNDEFINED;
- else
- *typ = static_cast<MapType>(stream->ReadInt8());
-
- return id;
- }
- else {
- *typ = IGNITE_MAP_UNDEFINED;
- *size = -1;
-
- return ++elemIdGen;
- }
- }
-
- bool PortableReaderImpl::HasNextElement(int32_t id)
- {
- return elemId == id && elemRead < elemCnt;
- }
-
- void PortableReaderImpl::SetRawMode()
- {
- CheckRawMode(false);
- CheckSingleMode(true);
-
- stream->Position(pos + rawOff);
- rawMode = true;
- }
-
- template <>
- int8_t PortableReaderImpl::ReadTopObject<int8_t>()
- {
- return ReadTopObject0(IGNITE_TYPE_BYTE, PortableUtils::ReadInt8, static_cast<int8_t>(0));
- }
-
- template <>
- bool PortableReaderImpl::ReadTopObject<bool>()
- {
- return ReadTopObject0(IGNITE_TYPE_BOOL, PortableUtils::ReadBool, static_cast<bool>(0));
- }
-
- template <>
- int16_t PortableReaderImpl::ReadTopObject<int16_t>()
- {
- return ReadTopObject0(IGNITE_TYPE_SHORT, PortableUtils::ReadInt16, static_cast<int16_t>(0));
- }
-
- template <>
- uint16_t PortableReaderImpl::ReadTopObject<uint16_t>()
- {
- return ReadTopObject0(IGNITE_TYPE_CHAR, PortableUtils::ReadUInt16, static_cast<uint16_t>(0));
- }
-
- template <>
- int32_t PortableReaderImpl::ReadTopObject<int32_t>()
- {
- return ReadTopObject0(IGNITE_TYPE_INT, PortableUtils::ReadInt32, static_cast<int32_t>(0));
- }
-
- template <>
- int64_t PortableReaderImpl::ReadTopObject<int64_t>()
- {
- return ReadTopObject0(IGNITE_TYPE_LONG, PortableUtils::ReadInt64, static_cast<int64_t>(0));
- }
-
- template <>
- float PortableReaderImpl::ReadTopObject<float>()
- {
- return ReadTopObject0(IGNITE_TYPE_FLOAT, PortableUtils::ReadFloat, static_cast<float>(0));
- }
-
- template <>
- double PortableReaderImpl::ReadTopObject<double>()
- {
- return ReadTopObject0(IGNITE_TYPE_DOUBLE, PortableUtils::ReadDouble, static_cast<double>(0));
- }
-
- template <>
- Guid PortableReaderImpl::ReadTopObject<Guid>()
- {
- int8_t typeId = stream->ReadInt8();
-
- if (typeId == IGNITE_TYPE_UUID)
- return PortableUtils::ReadGuid(stream);
- else if (typeId == IGNITE_HDR_NULL)
- return Guid();
- else {
- int32_t pos = stream->Position() - 1;
-
- IGNITE_ERROR_FORMATTED_3(IgniteError::IGNITE_ERR_PORTABLE, "Invalid header", "position", pos, "expected", IGNITE_TYPE_UUID, "actual", typeId)
- }
- }
-
- InteropInputStream* PortableReaderImpl::GetStream()
- {
- return stream;
- }
-
- int32_t PortableReaderImpl::SeekField(const int32_t fieldId)
- {
- // We assume that it is very likely that fields are read in the same
- // order as they were initially written. So we start seeking field
- // from current stream position making a "loop" up to this position.
- int32_t marker = stream->Position();
-
- for (int32_t curPos = marker; curPos < pos + rawOff;)
- {
- int32_t curFieldId = stream->ReadInt32();
- int32_t curFieldLen = stream->ReadInt32();
-
- if (fieldId == curFieldId)
- return curFieldLen;
- else {
- curPos = stream->Position() + curFieldLen;
-
- stream->Position(curPos);
- }
- }
-
- stream->Position(pos + IGNITE_FULL_HDR_LEN);
-
- for (int32_t curPos = stream->Position(); curPos < marker;)
- {
- int32_t curFieldId = stream->ReadInt32();
- int32_t curFieldLen = stream->ReadInt32();
-
- if (fieldId == curFieldId)
- return curFieldLen;
- else {
- curPos = stream->Position() + curFieldLen;
-
- stream->Position(curPos);
- }
- }
-
- return -1;
- }
-
- void PortableReaderImpl::CheckRawMode(bool expected)
- {
- if (expected && !rawMode) {
- IGNITE_ERROR_1(IgniteError::IGNITE_ERR_PORTABLE, "Operation can be performed only in raw mode.")
- }
- else if (!expected && rawMode) {
- IGNITE_ERROR_1(IgniteError::IGNITE_ERR_PORTABLE, "Operation cannot be performed in raw mode.")
- }
- }
-
- void PortableReaderImpl::CheckSingleMode(bool expected)
- {
- if (expected && elemId != 0) {
- IGNITE_ERROR_1(IgniteError::IGNITE_ERR_PORTABLE, "Operation cannot be performed when container is being read.");
- }
- else if (!expected && elemId == 0) {
- IGNITE_ERROR_1(IgniteError::IGNITE_ERR_PORTABLE, "Operation can be performed only when container is being read.");
- }
- }
-
- int32_t PortableReaderImpl::StartContainerSession(bool expRawMode, int8_t expHdr, int32_t* size)
- {
- CheckRawMode(expRawMode);
- CheckSingleMode(true);
-
- int8_t hdr = stream->ReadInt8();
-
- if (hdr == expHdr)
- {
- int32_t cnt = stream->ReadInt32();
-
- if (cnt != 0)
- {
- elemId = ++elemIdGen;
- elemCnt = cnt;
- elemRead = 0;
-
- *size = cnt;
-
- return elemId;
- }
- else
- {
- *size = 0;
-
- return ++elemIdGen;
- }
- }
- else if (hdr == IGNITE_HDR_NULL) {
- *size = -1;
-
- return ++elemIdGen;
- }
- else {
- ThrowOnInvalidHeader(expHdr, hdr);
-
- return 0;
- }
- }
-
- void PortableReaderImpl::CheckSession(int32_t expSes)
- {
- if (elemId != expSes) {
- IGNITE_ERROR_1(IgniteError::IGNITE_ERR_PORTABLE, "Containter read session has been finished or is not started yet.");
- }
- }
-
- void PortableReaderImpl::ThrowOnInvalidHeader(int32_t pos, int8_t expHdr, int8_t hdr)
- {
- IGNITE_ERROR_FORMATTED_3(IgniteError::IGNITE_ERR_PORTABLE, "Invalid header", "position", pos, "expected", expHdr, "actual", hdr)
- }
-
- void PortableReaderImpl::ThrowOnInvalidHeader(int8_t expHdr, int8_t hdr)
- {
- int32_t pos = stream->Position() - 1;
-
- ThrowOnInvalidHeader(pos, expHdr, hdr);
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/524f5653/modules/platform/src/main/cpp/core/src/impl/portable/portable_utils.cpp
----------------------------------------------------------------------
diff --git a/modules/platform/src/main/cpp/core/src/impl/portable/portable_utils.cpp b/modules/platform/src/main/cpp/core/src/impl/portable/portable_utils.cpp
deleted file mode 100644
index 2f9c259..0000000
--- a/modules/platform/src/main/cpp/core/src/impl/portable/portable_utils.cpp
+++ /dev/null
@@ -1,214 +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.
- */
-
-#include "ignite/impl/interop/interop.h"
-#include "ignite/impl/portable/portable_utils.h"
-
-using namespace ignite::impl::interop;
-using namespace ignite::impl::portable;
-
-namespace ignite
-{
- namespace impl
- {
- namespace portable
- {
- int8_t PortableUtils::ReadInt8(InteropInputStream* stream)
- {
- return stream->ReadInt8();
- }
-
- void PortableUtils::WriteInt8(InteropOutputStream* stream, int8_t val)
- {
- stream->WriteInt8(val);
- }
-
- void PortableUtils::ReadInt8Array(InteropInputStream* stream, int8_t* res, const int32_t len)
- {
- stream->ReadInt8Array(res, len);
- }
-
- void PortableUtils::WriteInt8Array(InteropOutputStream* stream, const int8_t* val, const int32_t len)
- {
- stream->WriteInt8Array(val, len);
- }
-
- bool PortableUtils::ReadBool(InteropInputStream* stream)
- {
- return stream->ReadBool();
- }
-
- void PortableUtils::WriteBool(InteropOutputStream* stream, bool val)
- {
- stream->WriteBool(val);
- }
-
- void PortableUtils::ReadBoolArray(InteropInputStream* stream, bool* res, const int32_t len)
- {
- stream->ReadBoolArray(res, len);
- }
-
- void PortableUtils::WriteBoolArray(InteropOutputStream* stream, const bool* val, const int32_t len)
- {
- stream->WriteBoolArray(val, len);
- }
-
- int16_t PortableUtils::ReadInt16(InteropInputStream* stream)
- {
- return stream->ReadInt16();
- }
-
- void PortableUtils::WriteInt16(InteropOutputStream* stream, int16_t val)
- {
- stream->WriteInt16(val);
- }
-
- void PortableUtils::ReadInt16Array(InteropInputStream* stream, int16_t* res, const int32_t len)
- {
- stream->ReadInt16Array(res, len);
- }
-
- void PortableUtils::WriteInt16Array(InteropOutputStream* stream, const int16_t* val, const int32_t len)
- {
- stream->WriteInt16Array(val, len);
- }
-
- uint16_t PortableUtils::ReadUInt16(InteropInputStream* stream)
- {
- return stream->ReadUInt16();
- }
-
- void PortableUtils::WriteUInt16(InteropOutputStream* stream, uint16_t val)
- {
- stream->WriteUInt16(val);
- }
-
- void PortableUtils::ReadUInt16Array(InteropInputStream* stream, uint16_t* res, const int32_t len)
- {
- stream->ReadUInt16Array(res, len);
- }
-
- void PortableUtils::WriteUInt16Array(InteropOutputStream* stream, const uint16_t* val, const int32_t len)
- {
- stream->WriteUInt16Array(val, len);
- }
-
- int32_t PortableUtils::ReadInt32(InteropInputStream* stream)
- {
- return stream->ReadInt32();
- }
-
- void PortableUtils::WriteInt32(InteropOutputStream* stream, int32_t val)
- {
- stream->WriteInt32(val);
- }
-
- void PortableUtils::ReadInt32Array(InteropInputStream* stream, int32_t* res, const int32_t len)
- {
- stream->ReadInt32Array(res, len);
- }
-
- void PortableUtils::WriteInt32Array(InteropOutputStream* stream, const int32_t* val, const int32_t len)
- {
- stream->WriteInt32Array(val, len);
- }
-
- int64_t PortableUtils::ReadInt64(InteropInputStream* stream)
- {
- return stream->ReadInt64();
- }
-
- void PortableUtils::WriteInt64(InteropOutputStream* stream, int64_t val)
- {
- stream->WriteInt64(val);
- }
-
- void PortableUtils::ReadInt64Array(InteropInputStream* stream, int64_t* res, const int32_t len)
- {
- stream->ReadInt64Array(res, len);
- }
-
- void PortableUtils::WriteInt64Array(InteropOutputStream* stream, const int64_t* val, const int32_t len)
- {
- stream->WriteInt64Array(val, len);
- }
-
- float PortableUtils::ReadFloat(InteropInputStream* stream)
- {
- return stream->ReadFloat();
- }
-
- void PortableUtils::WriteFloat(InteropOutputStream* stream, float val)
- {
- stream->WriteFloat(val);
- }
-
- void PortableUtils::ReadFloatArray(InteropInputStream* stream, float* res, const int32_t len)
- {
- stream->ReadFloatArray(res, len);
- }
-
- void PortableUtils::WriteFloatArray(InteropOutputStream* stream, const float* val, const int32_t len)
- {
- stream->WriteFloatArray(val, len);
- }
-
- double PortableUtils::ReadDouble(InteropInputStream* stream)
- {
- return stream->ReadDouble();
- }
-
- void PortableUtils::WriteDouble(InteropOutputStream* stream, double val)
- {
- stream->WriteDouble(val);
- }
-
- void PortableUtils::ReadDoubleArray(InteropInputStream* stream, double* res, const int32_t len)
- {
- stream->ReadDoubleArray(res, len);
- }
-
- void PortableUtils::WriteDoubleArray(InteropOutputStream* stream, const double* val, const int32_t len)
- {
- stream->WriteDoubleArray(val, len);
- }
-
- Guid PortableUtils::ReadGuid(interop::InteropInputStream* stream)
- {
- int64_t most = stream->ReadInt64();
- int64_t least = stream->ReadInt64();
-
- return Guid(most, least);
- }
-
- void PortableUtils::WriteGuid(interop::InteropOutputStream* stream, const Guid val)
- {
- stream->WriteInt64(val.GetMostSignificantBits());
- stream->WriteInt64(val.GetLeastSignificantBits());
- }
-
- void PortableUtils::WriteString(interop::InteropOutputStream* stream, const char* val, const int32_t len)
- {
- stream->WriteBool(false);
- stream->WriteInt32(len);
-
- for (int i = 0; i < len; i++)
- stream->WriteUInt16(*(val + i));
- }
- }
- }
-}
\ No newline at end of file