http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/README.txt ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/README.txt b/modules/platform/src/main/cpp/README.txt deleted file mode 100644 index c9e6999..0000000 --- a/modules/platform/src/main/cpp/README.txt +++ /dev/null @@ -1,101 +0,0 @@ -Apache Ignite for C++ -================================== - -Ignite C++ provides data grid functionality. -Using Ignite C++ APIs you can execute perform concurrent operations on -the data stored in cache. - -Ignite C++ can access cluster and share data with .Net and -Java applications using portable object format. - -Support for the following will be added in next releases: - * ACID transactions management. - * Distributed locks. - * Async operations. - * Cache SQL queries and continuous queries. - * Event listening. - * Compute grid functionality. - -Full source code is provided. Users should build the library for intended platform. - -Building on Linux With Autotools ----------------------------------- - -Common Requirements: - - * GCC, g++, autotools, automake, and libtool must be installed - * Java Development Kit (JDK) must be installed: https://java.com/en/download/index.jsp - * JAVA_HOME environment variable must be set pointing to Java installation directory. - -Building the library: - - * Build Ignite C++ helper "common" library: - * Navigate to the directory $IGNITE_HOME/platforms/cpp/src/common - * Execute the following commands one by one: - * libtoolize - * aclocal - * autoheader - * automake --add-missing - * autoreconf - * ./configure - * make - * make install - * Build Ignite C++ library: - * Navigate to the directory $IGNITE_HOME/platforms/cpp/src/core - * Execute the following commands one by one: - * libtoolize - * aclocal - * autoheader - * automake --add-missing - * autoreconf - * ./configure - * make - * make install - -NOTE: "make install" command may require superuser privileges. In this case it must be -executed as "sudo make install". - -Development: - - * IGNITE_HOME environment variable must be set to Ignite installation directory. - * Once both libraries are built and installed, required headers are placed in the - "/usr/local/include/ignite" directory. - * Ignite C++ depends on jni.h file located inside ${JAVA_HOME}/include directory. - Add this directory to headers search path: "-I${JAVA_HOME}/include". - * Library is placed in the "/usr/local/lib" directory. Link it to your project: "-lignite". - * Ignite depends on "libjvm.so" library shipped with Java. Typically this library is located inside - $JAVA_HOME/jre/lib/amd64/server directory. Ensure that LD_LIBRARY_PATH environment variable points to this directory. - - -Building on Windows with Visual Studio (tm) ----------------------------------- - -Common Requirements: - - * Microsoft Visual Studio (tm) 2010 or later - * Windows SDK 7.1 - * Java Development Kit (JDK) must be installed: https://java.com/en/download/index.jsp - * JAVA_HOME environment variable must be set pointing to Java installation directory. - -Building the library: - - * Open and build %IGNITE_HOME%\platforms\cpp\src\project\vs\ignite.sln (or ignite_86.sln if you are running - 32-bit platform). - -Development: - - * IGNITE_HOME environment variable must be set to Ignite installation directory. - * Update Include Directories in Project Properties with paths to: - * $(IGNITE_HOME)\platforms\cpp\src\core\include - * $(IGNITE_HOME)\platforms\cpp\src\core\os\win\include - * $(IGNITE_HOME)\platforms\cpp\src\common\include - * $(IGNITE_HOME)\platforms\cpp\src\common\os\win\include - * $(JAVA_HOME)\include - * $(JAVA_HOME)\include\win32 - * Update Library Directories with path to the built binaries - * Update Linker\Input\Additional Dependencies in Project Properties with path to - * ignite.common.lib - * ignite.core.lib - * Make sure that your application is aware about ignite.common.dll and ignite.core.dll libraries. The easiest way - to achieve this is to either make sure these files are in %PATH%, or to put them into the output directory of - your project with help of PostBuild events.
http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/Makefile.am ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/Makefile.am b/modules/platform/src/main/cpp/common/Makefile.am deleted file mode 100644 index f5ca5dd..0000000 --- a/modules/platform/src/main/cpp/common/Makefile.am +++ /dev/null @@ -1,45 +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. -## - -ACLOCAL_AMFLAGS = "-Im4" - -SUBDIRS = . include os/linux/include -DIST_SUBDIRS = . include os/linux/include - -AM_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/os/linux/include -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -DIGNITE_IMPL -AM_CXXFLAGS = -Wall -std=c++0x -LIB_LDFLAGS = -no-undefined -version-info 1 - -COMMON_SRC = os/linux/src/concurrent_os.cpp \ - src/concurrent.cpp \ - src/java.cpp \ - src/exports.cpp \ - os/linux/src/common.cpp - -lib_LTLIBRARIES = libignite-common.la -libignite_common_la_SOURCES = $(COMMON_SRC) -libignite_common_la_LIBADD = -L$(JAVA_HOME)/jre/lib/amd64/server -libignite_common_la_LDFLAGS = $(LIB_LDFLAGS) -L/usr/local/lib -ljvm -version-info 0:0:0 -release $(PACKAGE_VERSION) - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = ignite-common.pc - -clean-local: - $(RM) *.gcno *.gcda - -clean-docs: - $(RM) $(DX_CLEANFILES) http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/configure.ac ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/configure.ac b/modules/platform/src/main/cpp/common/configure.ac deleted file mode 100644 index 5cab969..0000000 --- a/modules/platform/src/main/cpp/common/configure.ac +++ /dev/null @@ -1,62 +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. -# - -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ([2.69]) -AC_INIT([Apache Ignite JNI bridge for C++], [1.5.0], [[email protected]], [ignite-common], [ignite.apache.org]) -AC_CONFIG_SRCDIR(src) - -AC_CANONICAL_SYSTEM -AC_CONFIG_MACRO_DIR([m4]) -AC_LANG([C++]) - -# Initialize automake -AM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) -AC_CONFIG_HEADER(config.h) - -AM_PROG_AR - -# Checks for programs. -GXX="-g -O2" - -AC_PROG_CXX - -# Initialize Libtool -LT_INIT - -# Checks for libraries. -AC_CHECK_LIB([pthread], [pthread_mutex_lock]) - -# Checks for header files. - -# Checks for typedefs, structures, and compiler characteristics. -AC_C_INLINE -AC_TYPE_INT16_T -AC_TYPE_INT32_T -AC_TYPE_INT64_T -AC_TYPE_INT8_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T - -# Checks for library functions. -AC_FUNC_ERROR_AT_LINE - -AC_CONFIG_FILES(Makefile include/Makefile os/linux/include/Makefile ignite-common.pc) - -AC_OUTPUT http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/ignite-common.pc.in ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/ignite-common.pc.in b/modules/platform/src/main/cpp/common/ignite-common.pc.in deleted file mode 100644 index b8c40d2..0000000 --- a/modules/platform/src/main/cpp/common/ignite-common.pc.in +++ /dev/null @@ -1,9 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: ignite-common -Description: Apache Ignite JNI bridge for C++. -Version: @PACKAGE_VERSION@ -Libs: -L${libdir} -lignite-common http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/include/Makefile.am ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/include/Makefile.am b/modules/platform/src/main/cpp/common/include/Makefile.am deleted file mode 100644 index 5db1d4a..0000000 --- a/modules/platform/src/main/cpp/common/include/Makefile.am +++ /dev/null @@ -1,22 +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. -## - -ACLOCAL_AMFLAGS = "-Im4" - -nobase_include_HEADERS = ignite/common/concurrent.h \ - ignite/common/java.h \ - ignite/common/exports.h http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/include/ignite/common/concurrent.h ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/include/ignite/common/concurrent.h b/modules/platform/src/main/cpp/common/include/ignite/common/concurrent.h deleted file mode 100644 index 1c9ab22..0000000 --- a/modules/platform/src/main/cpp/common/include/ignite/common/concurrent.h +++ /dev/null @@ -1,210 +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_COMMON_CONCURRENT -#define _IGNITE_COMMON_CONCURRENT - -#include "ignite/common/concurrent_os.h" - -namespace ignite -{ - namespace common - { - namespace concurrent - { - /** - * Default deleter implementation. - * - * @param obj Object to be deleted. - */ - template<typename T> - IGNITE_IMPORT_EXPORT void SharedPointerDefaultDeleter(T* obj) - { - delete obj; - } - - /** - * Holder of shared pointer data. - */ - class IGNITE_IMPORT_EXPORT SharedPointerImpl - { - public: - /** - * Constructor. - * - * @param ptr Raw pointer. - */ - SharedPointerImpl(void* ptr); - - /** - * Get raw pointer. - * - * @return Raw pointer. - */ - void* Pointer(); - - /** - * Increment usage counter. - */ - void Increment(); - - /** - * Decrement usage counter. - * - * @return True if counter reached zero. - */ - bool Decrement(); - private: - /** Raw pointer. */ - void* ptr; - - /** Reference count. */ - int32_t refCnt; - - IGNITE_NO_COPY_ASSIGNMENT(SharedPointerImpl) - }; - - /** - * Shared pointer. - */ - template<typename T> - class IGNITE_IMPORT_EXPORT SharedPointer - { - public: - /** - * Constructor. - */ - SharedPointer() : impl(NULL), deleter(NULL) - { - // No-op. - } - - /** - * Constructor. - * - * @param ptr Raw pointer. - */ - explicit SharedPointer(T* ptr) - { - if (ptr) - { - impl = new SharedPointerImpl(ptr); - deleter = SharedPointerDefaultDeleter; - } - else - { - impl = NULL; - deleter = NULL; - } - } - - /** - * Constructor. - * - * @param ptr Raw pointer. - * @param deleter Delete function. - */ - SharedPointer(T* ptr, void(*deleter)(T*)) - { - if (ptr) - { - this->impl = new SharedPointerImpl(ptr); - this->deleter = deleter; - } - else - { - this->impl = NULL; - this->deleter = NULL; - } - } - - /** - * Copy constructor. - * - * @param other Instance to copy. - */ - SharedPointer(const SharedPointer& other) - { - impl = other.impl; - deleter = other.deleter; - - if (impl) - impl->Increment(); - } - - /** - * Assignment operator. - * - * @param other Other instance. - */ - SharedPointer& operator=(const SharedPointer& other) - { - if (this != &other) - { - // 1. Create new instance. - SharedPointer tmp(other); - - // 2. Swap with temp. - SharedPointerImpl* impl0 = impl; - void(*deleter0)(T*) = deleter; - - impl = tmp.impl; - deleter = tmp.deleter; - - tmp.impl = impl0; - tmp.deleter = deleter0; - } - - return *this; - } - - /** - * Destructor. - */ - ~SharedPointer() - { - if (impl && impl->Decrement()) - { - T* ptr = Get(); - - delete impl; - - deleter(ptr); - } - } - - /** - * Get raw pointer. - * - * @return Raw pointer. - */ - T* Get() - { - return impl ? static_cast<T*>(impl->Pointer()) : NULL; - } - private: - /** Implementation. */ - SharedPointerImpl* impl; - - /** Delete function. */ - void(*deleter)(T*); - }; - } - } -} - -#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/include/ignite/common/exports.h ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/include/ignite/common/exports.h b/modules/platform/src/main/cpp/common/include/ignite/common/exports.h deleted file mode 100644 index 930fad3..0000000 --- a/modules/platform/src/main/cpp/common/include/ignite/common/exports.h +++ /dev/null @@ -1,145 +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_COMMON_EXPORTS -#define _IGNITE_COMMON_EXPORTS - -#include "ignite/common/java.h" - -namespace gcj = ignite::common::java; - -extern "C" { - int IGNITE_CALL IgniteReallocate(long long memPtr, int cap); - - void* IGNITE_CALL IgniteIgnitionStart(gcj::JniContext* ctx, char* cfgPath, char* name, int factoryId, long long dataPtr); - void* IGNITE_CALL IgniteIgnitionInstance(gcj::JniContext* ctx, char* name); - long long IGNITE_CALL IgniteIgnitionEnvironmentPointer(gcj::JniContext* ctx, char* name); - bool IGNITE_CALL IgniteIgnitionStop(gcj::JniContext* ctx, char* name, bool cancel); - void IGNITE_CALL IgniteIgnitionStopAll(gcj::JniContext* ctx, bool cancel); - - void IGNITE_CALL IgniteProcessorReleaseStart(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProcessorProjection(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProcessorCache(gcj::JniContext* ctx, void* obj, char* name); - void* IGNITE_CALL IgniteProcessorCreateCache(gcj::JniContext* ctx, void* obj, char* name); - void* IGNITE_CALL IgniteProcessorGetOrCreateCache(gcj::JniContext* ctx, void* obj, char* name); - void* IGNITE_CALL IgniteProcessorAffinity(gcj::JniContext* ctx, void* obj, char* name); - void* IGNITE_CALL IgniteProcessorDataStreamer(gcj::JniContext* ctx, void* obj, char* name, bool keepPortable); - void* IGNITE_CALL IgniteProcessorTransactions(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProcessorCompute(gcj::JniContext* ctx, void* obj, void* prj); - void* IGNITE_CALL IgniteProcessorMessage(gcj::JniContext* ctx, void* obj, void* prj); - void* IGNITE_CALL IgniteProcessorEvents(gcj::JniContext* ctx, void* obj, void* prj); - void* IGNITE_CALL IgniteProcessorServices(gcj::JniContext* ctx, void* obj, void* prj); - void* IGNITE_CALL IgniteProcessorExtensions(gcj::JniContext* ctx, void* obj); - - long long IGNITE_CALL IgniteTargetInStreamOutLong(gcj::JniContext* ctx, void* obj, int opType, long long memPtr); - void IGNITE_CALL IgniteTargetInStreamOutStream(gcj::JniContext* ctx, void* obj, int opType, long long inMemPtr, long long outMemPtr); - void* IGNITE_CALL IgniteTargetInStreamOutObject(gcj::JniContext* ctx, void* obj, int opType, long long memPtr); - void IGNITE_CALL IgniteTargetInObjectStreamOutStream(gcj::JniContext* ctx, void* obj, int opType, void* arg, long long inMemPtr, long long outMemPtr); - long long IGNITE_CALL IgniteTargetOutLong(gcj::JniContext* ctx, void* obj, int opType); - void IGNITE_CALL IgniteTargetOutStream(gcj::JniContext* ctx, void* obj, int opType, long long memPtr); - void* IGNITE_CALL IgniteTargetOutObject(gcj::JniContext* ctx, void* obj, int opType); - void IGNITE_CALL IgniteTargetListenFuture(gcj::JniContext* ctx, void* obj, long long futId, int typ); - void IGNITE_CALL IgniteTargetListenFutureForOperation(gcj::JniContext* ctx, void* obj, long long futId, int typ, int opId); - - int IGNITE_CALL IgniteAffinityPartitions(gcj::JniContext* ctx, void* obj); - - void* IGNITE_CALL IgniteCacheWithSkipStore(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteCacheWithNoRetries(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteCacheWithExpiryPolicy(gcj::JniContext* ctx, void* obj, long long create, long long update, long long access); - void* IGNITE_CALL IgniteCacheWithAsync(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteCacheWithKeepPortable(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteCacheClear(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteCacheRemoveAll(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteCacheOutOpQueryCursor(gcj::JniContext* ctx, void* obj, int type, long long memPtr); - void* IGNITE_CALL IgniteCacheOutOpContinuousQuery(gcj::JniContext* ctx, void* obj, int type, long long memPtr); - void* IGNITE_CALL IgniteCacheIterator(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteCacheLocalIterator(gcj::JniContext* ctx, void* obj, int peekModes); - void IGNITE_CALL IgniteCacheEnterLock(gcj::JniContext* ctx, void* obj, long long id); - void IGNITE_CALL IgniteCacheExitLock(gcj::JniContext* ctx, void* obj, long long id); - bool IGNITE_CALL IgniteCacheTryEnterLock(gcj::JniContext* ctx, void* obj, long long id, long long timeout); - void IGNITE_CALL IgniteCacheCloseLock(gcj::JniContext* ctx, void* obj, long long id); - void IGNITE_CALL IgniteCacheRebalance(gcj::JniContext* ctx, void* obj, long long futId); - int IGNITE_CALL IgniteCacheSize(gcj::JniContext* ctx, void* obj, int peekModes, bool loc); - - void IGNITE_CALL IgniteCacheStoreCallbackInvoke(gcj::JniContext* ctx, void* obj, long long memPtr); - - void IGNITE_CALL IgniteComputeWithNoFailover(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteComputeWithTimeout(gcj::JniContext* ctx, void* obj, long long timeout); - void IGNITE_CALL IgniteComputeExecuteNative(gcj::JniContext* ctx, void* obj, long long taskPtr, long long topVer); - - void IGNITE_CALL IgniteContinuousQueryClose(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteContinuousQueryGetInitialQueryCursor(gcj::JniContext* ctx, void* obj); - - void IGNITE_CALL IgniteDataStreamerListenTopology(gcj::JniContext* ctx, void* obj, long long ptr); - bool IGNITE_CALL IgniteDataStreamerAllowOverwriteGet(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteDataStreamerAllowOverwriteSet(gcj::JniContext* ctx, void* obj, bool val); - bool IGNITE_CALL IgniteDataStreamerSkipStoreGet(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteDataStreamerSkipStoreSet(gcj::JniContext* ctx, void* obj, bool val); - int IGNITE_CALL IgniteDataStreamerPerNodeBufferSizeGet(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteDataStreamerPerNodeBufferSizeSet(gcj::JniContext* ctx, void* obj, int val); - int IGNITE_CALL IgniteDataStreamerPerNodeParallelOperationsGet(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteDataStreamerPerNodeParallelOperationsSet(gcj::JniContext* ctx, void* obj, int val); - - void* IGNITE_CALL IgniteMessagingWithAsync(gcj::JniContext* ctx, void* obj); - - void* IGNITE_CALL IgniteProjectionForOthers(gcj::JniContext* ctx, void* obj, void* prj); - void* IGNITE_CALL IgniteProjectionForRemotes(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProjectionForDaemons(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProjectionForRandom(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProjectionForOldest(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProjectionForYoungest(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteProjectionResetMetrics(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteProjectionOutOpRet(gcj::JniContext* ctx, void* obj, int type, long long memPtr); - - void IGNITE_CALL IgniteQueryCursorIterator(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteQueryCursorClose(gcj::JniContext* ctx, void* obj); - - long long IGNITE_CALL IgniteTransactionsStart(gcj::JniContext* ctx, void* obj, int concurrency, int isolation, long long timeout, int txSize); - int IGNITE_CALL IgniteTransactionsCommit(gcj::JniContext* ctx, void* obj, long long id); - void IGNITE_CALL IgniteTransactionsCommitAsync(gcj::JniContext* ctx, void* obj, long long id, long long futId); - int IGNITE_CALL IgniteTransactionsRollback(gcj::JniContext* ctx, void* obj, long long id); - void IGNITE_CALL IgniteTransactionsRollbackAsync(gcj::JniContext* ctx, void* obj, long long id, long long futId); - int IGNITE_CALL IgniteTransactionsClose(gcj::JniContext* ctx, void* obj, long long id); - int IGNITE_CALL IgniteTransactionsState(gcj::JniContext* ctx, void* obj, long long id); - bool IGNITE_CALL IgniteTransactionsSetRollbackOnly(gcj::JniContext* ctx, void* obj, long long id); - void IGNITE_CALL IgniteTransactionsResetMetrics(gcj::JniContext* ctx, void* obj); - - void* IGNITE_CALL IgniteAcquire(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteRelease(void* obj); - - void IGNITE_CALL IgniteThrowToJava(gcj::JniContext* ctx, char* errMsg); - - int IGNITE_CALL IgniteHandlersSize(); - - void* IGNITE_CALL IgniteCreateContext(char** opts, int optsLen, gcj::JniHandlers* cbs); - void IGNITE_CALL IgniteDeleteContext(gcj::JniContext* ctx); - - void IGNITE_CALL IgniteDestroyJvm(gcj::JniContext* ctx); - - void* IGNITE_CALL IgniteEventsWithAsync(gcj::JniContext* ctx, void* obj); - bool IGNITE_CALL IgniteEventsStopLocalListen(gcj::JniContext* ctx, void* obj, long long hnd); - void IGNITE_CALL IgniteEventsLocalListen(gcj::JniContext* ctx, void* obj, long long hnd, int type); - bool IGNITE_CALL IgniteEventsIsEnabled(gcj::JniContext* ctx, void* obj, int type); - - void* IGNITE_CALL IgniteServicesWithAsync(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteServicesWithServerKeepPortable(gcj::JniContext* ctx, void* obj); - void IGNITE_CALL IgniteServicesCancel(gcj::JniContext* ctx, void* obj, char* name); - void IGNITE_CALL IgniteServicesCancelAll(gcj::JniContext* ctx, void* obj); - void* IGNITE_CALL IgniteServicesGetServiceProxy(gcj::JniContext* ctx, void* obj, char* name, bool sticky); -} - -#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/include/ignite/common/java.h ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/include/ignite/common/java.h b/modules/platform/src/main/cpp/common/include/ignite/common/java.h deleted file mode 100644 index 01ecbe3..0000000 --- a/modules/platform/src/main/cpp/common/include/ignite/common/java.h +++ /dev/null @@ -1,652 +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_COMMON_JVM -#define _IGNITE_COMMON_JVM - -#include <jni.h> - -#include "ignite/common/common.h" - -namespace ignite -{ - namespace common - { - namespace java - { - /* Error constants. */ - const int IGNITE_JNI_ERR_SUCCESS = 0; - const int IGNITE_JNI_ERR_GENERIC = 1; - const int IGNITE_JNI_ERR_JVM_INIT = 2; - const int IGNITE_JNI_ERR_JVM_ATTACH = 3; - - /* Handlers for callbacks from Java. */ - typedef long long(JNICALL *CacheStoreCreateHandler)(void* target, long long memPtr); - typedef int(JNICALL *CacheStoreInvokeHandler)(void* target, long long objPtr, long long memPtr, void* cb); - typedef void(JNICALL *CacheStoreDestroyHandler)(void* target, long long objPtr); - typedef long long(JNICALL *CacheStoreSessionCreateHandler)(void* target, long long storePtr); - - typedef long long(JNICALL *CacheEntryFilterCreateHandler)(void* target, long long memPtr); - typedef int(JNICALL *CacheEntryFilterApplyHandler)(void* target, long long ptr, long long memPtr); - typedef void(JNICALL *CacheEntryFilterDestroyHandler)(void* target, long long ptr); - - typedef void(JNICALL *CacheInvokeHandler)(void* target, long long inMemPtr, long long outMemPtr); - - typedef void(JNICALL *ComputeTaskMapHandler)(void* target, long long taskPtr, long long inMemPtr, long long outMemPtr); - typedef int(JNICALL *ComputeTaskJobResultHandler)(void* target, long long taskPtr, long long jobPtr, long long memPtr); - typedef void(JNICALL *ComputeTaskReduceHandler)(void* target, long long taskPtr); - typedef void(JNICALL *ComputeTaskCompleteHandler)(void* target, long long taskPtr, long long memPtr); - typedef int(JNICALL *ComputeJobSerializeHandler)(void* target, long long jobPtr, long long memPtr); - typedef long long(JNICALL *ComputeJobCreateHandler)(void* target, long long memPtr); - typedef void(JNICALL *ComputeJobExecuteHandler)(void* target, long long jobPtr, int cancel, long long memPtr); - typedef void(JNICALL *ComputeJobCancelHandler)(void* target, long long jobPtr); - typedef void(JNICALL *ComputeJobDestroyHandler)(void* target, long long jobPtr); - - typedef void(JNICALL *ContinuousQueryListenerApplyHandler)(void* target, long long lsnrPtr, long long memPtr); - typedef long long(JNICALL *ContinuousQueryFilterCreateHandler)(void* target, long long memPtr); - typedef int(JNICALL *ContinuousQueryFilterApplyHandler)(void* target, long long filterPtr, long long memPtr); - typedef void(JNICALL *ContinuousQueryFilterReleaseHandler)(void* target, long long filterPtr); - - typedef void(JNICALL *DataStreamerTopologyUpdateHandler)(void* target, long long ldrPtr, long long topVer, int topSize); - typedef void(JNICALL *DataStreamerStreamReceiverInvokeHandler)(void* target, long long ptr, void* cache, long long memPtr, unsigned char keepPortable); - - typedef void(JNICALL *FutureByteResultHandler)(void* target, long long futAddr, int res); - typedef void(JNICALL *FutureBoolResultHandler)(void* target, long long futAddr, int res); - typedef void(JNICALL *FutureShortResultHandler)(void* target, long long futAddr, int res); - typedef void(JNICALL *FutureCharResultHandler)(void* target, long long futAddr, int res); - typedef void(JNICALL *FutureIntResultHandler)(void* target, long long futAddr, int res); - typedef void(JNICALL *FutureFloatResultHandler)(void* target, long long futAddr, float res); - typedef void(JNICALL *FutureLongResultHandler)(void* target, long long futAddr, long long res); - typedef void(JNICALL *FutureDoubleResultHandler)(void* target, long long futAddr, double res); - typedef void(JNICALL *FutureObjectResultHandler)(void* target, long long futAddr, long long memPtr); - typedef void(JNICALL *FutureNullResultHandler)(void* target, long long futAddr); - typedef void(JNICALL *FutureErrorHandler)(void* target, long long futAddr, long long memPtr); - - typedef void(JNICALL *LifecycleEventHandler)(void* target, long long ptr, int evt); - - typedef void(JNICALL *MemoryReallocateHandler)(void* target, long long memPtr, int cap); - - typedef long long(JNICALL *MessagingFilterCreateHandler)(void* target, long long memPtr); - typedef int(JNICALL *MessagingFilterApplyHandler)(void* target, long long ptr, long long memPtr); - typedef void(JNICALL *MessagingFilterDestroyHandler)(void* target, long long ptr); - - typedef long long(JNICALL *EventFilterCreateHandler)(void* target, long long memPtr); - typedef int(JNICALL *EventFilterApplyHandler)(void* target, long long ptr, long long memPtr); - typedef void(JNICALL *EventFilterDestroyHandler)(void* target, long long ptr); - - typedef long long(JNICALL *ServiceInitHandler)(void* target, long long memPtr); - typedef void(JNICALL *ServiceExecuteHandler)(void* target, long long svcPtr, long long memPtr); - typedef void(JNICALL *ServiceCancelHandler)(void* target, long long svcPtr, long long memPtr); - typedef void(JNICALL *ServiceInvokeMethodHandler)(void* target, long long svcPtr, long long inMemPtr, long long outMemPtr); - typedef int(JNICALL *ClusterNodeFilterApplyHandler)(void* target, long long memPtr); - - typedef long long(JNICALL *NodeInfoHandler)(void* target, long long memPtr); - - typedef void(JNICALL *OnStartHandler)(void* target, void* proc, long long memPtr); - typedef void(JNICALL *OnStopHandler)(void* target); - typedef void(JNICALL *ErrorHandler)(void* target, int errCode, const char* errClsChars, int errClsCharsLen, const char* errMsgChars, int errMsgCharsLen, void* errData, int errDataLen); - - typedef long long(JNICALL *ExtensionCallbackInLongOutLongHandler)(void* target, int typ, long long arg1); - typedef long long(JNICALL *ExtensionCallbackInLongLongOutLongHandler)(void* target, int typ, long long arg1, long long arg2); - - /** - * JNI handlers holder. - */ - struct JniHandlers { - void* target; - - CacheStoreCreateHandler cacheStoreCreate; - CacheStoreInvokeHandler cacheStoreInvoke; - CacheStoreDestroyHandler cacheStoreDestroy; - CacheStoreSessionCreateHandler cacheStoreSessionCreate; - - CacheEntryFilterCreateHandler cacheEntryFilterCreate; - CacheEntryFilterApplyHandler cacheEntryFilterApply; - CacheEntryFilterDestroyHandler cacheEntryFilterDestroy; - - CacheInvokeHandler cacheInvoke; - - ComputeTaskMapHandler computeTaskMap; - ComputeTaskJobResultHandler computeTaskJobRes; - ComputeTaskReduceHandler computeTaskReduce; - ComputeTaskCompleteHandler computeTaskComplete; - ComputeJobSerializeHandler computeJobSerialize; - ComputeJobCreateHandler computeJobCreate; - ComputeJobExecuteHandler computeJobExec; - ComputeJobCancelHandler computeJobCancel; - ComputeJobDestroyHandler computeJobDestroy; - - ContinuousQueryListenerApplyHandler contQryLsnrApply; - ContinuousQueryFilterCreateHandler contQryFilterCreate; - ContinuousQueryFilterApplyHandler contQryFilterApply; - ContinuousQueryFilterReleaseHandler contQryFilterRelease; - - DataStreamerTopologyUpdateHandler dataStreamerTopologyUpdate; - DataStreamerStreamReceiverInvokeHandler streamReceiverInvoke; - - FutureByteResultHandler futByteRes; - FutureBoolResultHandler futBoolRes; - FutureShortResultHandler futShortRes; - FutureCharResultHandler futCharRes; - FutureIntResultHandler futIntRes; - FutureFloatResultHandler futFloatRes; - FutureLongResultHandler futLongRes; - FutureDoubleResultHandler futDoubleRes; - FutureObjectResultHandler futObjRes; - FutureNullResultHandler futNullRes; - FutureErrorHandler futErr; - - LifecycleEventHandler lifecycleEvt; - - MemoryReallocateHandler memRealloc; - - MessagingFilterCreateHandler messagingFilterCreate; - MessagingFilterApplyHandler messagingFilterApply; - MessagingFilterDestroyHandler messagingFilterDestroy; - - EventFilterCreateHandler eventFilterCreate; - EventFilterApplyHandler eventFilterApply; - EventFilterDestroyHandler eventFilterDestroy; - - ServiceInitHandler serviceInit; - ServiceExecuteHandler serviceExecute; - ServiceCancelHandler serviceCancel; - ServiceInvokeMethodHandler serviceInvokeMethod; - - ClusterNodeFilterApplyHandler clusterNodeFilterApply; - - NodeInfoHandler nodeInfo; - - OnStartHandler onStart; - OnStopHandler onStop; - ErrorHandler error; - - ExtensionCallbackInLongOutLongHandler extensionCallbackInLongOutLong; - ExtensionCallbackInLongLongOutLongHandler extensionCallbackInLongLongOutLong; - }; - - /** - * JNI Java members. - */ - struct JniJavaMembers { - jclass c_Class; - jmethodID m_Class_getName; - - jclass c_Throwable; - jmethodID m_Throwable_getMessage; - jmethodID m_Throwable_printStackTrace; - - /** - * Constructor. - */ - void Initialize(JNIEnv* env); - - /** - * Destroy members releasing all allocated classes. - */ - void Destroy(JNIEnv* env); - - /** - * Write error information. - */ - bool WriteErrorInfo(JNIEnv* env, char** errClsName, int* errClsNameLen, char** errMsg, int* errMsgLen); - }; - - /** - * JNI members. - */ - struct JniMembers { - jclass c_PlatformAbstractQryCursor; - jmethodID m_PlatformAbstractQryCursor_iter; - jmethodID m_PlatformAbstractQryCursor_iterHasNext; - jmethodID m_PlatformAbstractQryCursor_close; - - jclass c_PlatformAffinity; - jmethodID m_PlatformAffinity_partitions; - - jclass c_PlatformCache; - jmethodID m_PlatformCache_withSkipStore; - jmethodID m_PlatformCache_withNoRetries; - jmethodID m_PlatformCache_withExpiryPolicy; - jmethodID m_PlatformCache_withAsync; - jmethodID m_PlatformCache_withKeepPortable; - jmethodID m_PlatformCache_clear; - jmethodID m_PlatformCache_removeAll; - jmethodID m_PlatformCache_iterator; - jmethodID m_PlatformCache_localIterator; - jmethodID m_PlatformCache_enterLock; - jmethodID m_PlatformCache_exitLock; - jmethodID m_PlatformCache_tryEnterLock; - jmethodID m_PlatformCache_closeLock; - jmethodID m_PlatformCache_rebalance; - jmethodID m_PlatformCache_size; - - jclass c_PlatformCacheStoreCallback; - jmethodID m_PlatformCacheStoreCallback_invoke; - - jclass c_IgniteException; - - jclass c_PlatformClusterGroup; - jmethodID m_PlatformClusterGroup_forOthers; - jmethodID m_PlatformClusterGroup_forRemotes; - jmethodID m_PlatformClusterGroup_forDaemons; - jmethodID m_PlatformClusterGroup_forRandom; - jmethodID m_PlatformClusterGroup_forOldest; - jmethodID m_PlatformClusterGroup_forYoungest; - jmethodID m_PlatformClusterGroup_resetMetrics; - - jclass c_PlatformCompute; - jmethodID m_PlatformCompute_withNoFailover; - jmethodID m_PlatformCompute_withTimeout; - jmethodID m_PlatformCompute_executeNative; - - jclass c_PlatformContinuousQuery; - jmethodID m_PlatformContinuousQuery_close; - jmethodID m_PlatformContinuousQuery_getInitialQueryCursor; - - jclass c_PlatformDataStreamer; - jmethodID m_PlatformDataStreamer_listenTopology; - jmethodID m_PlatformDataStreamer_getAllowOverwrite; - jmethodID m_PlatformDataStreamer_setAllowOverwrite; - jmethodID m_PlatformDataStreamer_getSkipStore; - jmethodID m_PlatformDataStreamer_setSkipStore; - jmethodID m_PlatformDataStreamer_getPerNodeBufSize; - jmethodID m_PlatformDataStreamer_setPerNodeBufSize; - jmethodID m_PlatformDataStreamer_getPerNodeParallelOps; - jmethodID m_PlatformDataStreamer_setPerNodeParallelOps; - - jclass c_PlatformEvents; - jmethodID m_PlatformEvents_withAsync; - jmethodID m_PlatformEvents_stopLocalListen; - jmethodID m_PlatformEvents_localListen; - jmethodID m_PlatformEvents_isEnabled; - - jclass c_PlatformServices; - jmethodID m_PlatformServices_withAsync; - jmethodID m_PlatformServices_withServerKeepPortable; - jmethodID m_PlatformServices_cancel; - jmethodID m_PlatformServices_cancelAll; - jmethodID m_PlatformServices_serviceProxy; - - jclass c_PlatformIgnition; - jmethodID m_PlatformIgnition_start; - jmethodID m_PlatformIgnition_instance; - jmethodID m_PlatformIgnition_environmentPointer; - jmethodID m_PlatformIgnition_stop; - jmethodID m_PlatformIgnition_stopAll; - - jclass c_PlatformMessaging; - jmethodID m_PlatformMessaging_withAsync; - - jclass c_PlatformProcessor; - jmethodID m_PlatformProcessor_releaseStart; - jmethodID m_PlatformProcessor_cache; - jmethodID m_PlatformProcessor_createCache; - jmethodID m_PlatformProcessor_getOrCreateCache; - jmethodID m_PlatformProcessor_affinity; - jmethodID m_PlatformProcessor_dataStreamer; - jmethodID m_PlatformProcessor_transactions; - jmethodID m_PlatformProcessor_projection; - jmethodID m_PlatformProcessor_compute; - jmethodID m_PlatformProcessor_message; - jmethodID m_PlatformProcessor_events; - jmethodID m_PlatformProcessor_services; - jmethodID m_PlatformProcessor_extensions; - - jclass c_PlatformTarget; - jmethodID m_PlatformTarget_inStreamOutLong; - jmethodID m_PlatformTarget_inStreamOutObject; - jmethodID m_PlatformTarget_outLong; - jmethodID m_PlatformTarget_outStream; - jmethodID m_PlatformTarget_outObject; - jmethodID m_PlatformTarget_inStreamOutStream; - jmethodID m_PlatformTarget_inObjectStreamOutStream; - jmethodID m_PlatformTarget_listenFuture; - jmethodID m_PlatformTarget_listenFutureForOperation; - - jclass c_PlatformTransactions; - jmethodID m_PlatformTransactions_txStart; - jmethodID m_PlatformTransactions_txCommit; - jmethodID m_PlatformTransactions_txCommitAsync; - jmethodID m_PlatformTransactions_txRollback; - jmethodID m_PlatformTransactions_txRollbackAsync; - jmethodID m_PlatformTransactions_txState; - jmethodID m_PlatformTransactions_txSetRollbackOnly; - jmethodID m_PlatformTransactions_txClose; - jmethodID m_PlatformTransactions_resetMetrics; - - jclass c_PlatformUtils; - jmethodID m_PlatformUtils_reallocate; - jmethodID m_PlatformUtils_errData; - - /** - * Constructor. - */ - void Initialize(JNIEnv* env); - - /** - * Destroy members releasing all allocated classes. - */ - void Destroy(JNIEnv* env); - }; - - /** - * JNI JVM wrapper. - */ - class IGNITE_IMPORT_EXPORT JniJvm { - public: - /** - * Default constructor for uninitialized JVM. - */ - JniJvm(); - - /** - * Constructor. - * - * @param jvm JVM. - * @param javaMembers Java members. - * @param members Members. - */ - JniJvm(JavaVM* jvm, JniJavaMembers javaMembers, JniMembers members); - - /** - * Get JVM. - * - * @param JVM. - */ - JavaVM* GetJvm(); - - /** - * Get Java members. - * - * @param Java members. - */ - JniJavaMembers& GetJavaMembers(); - - /** - * Get members. - * - * @param Members. - */ - JniMembers& GetMembers(); - private: - /** JVM. */ - JavaVM* jvm; - - /** Java members. */ - JniJavaMembers javaMembers; - - /** Members. */ - JniMembers members; - }; - - /** - * JNI error information. - */ - struct IGNITE_IMPORT_EXPORT JniErrorInfo - { - int code; - char* errCls; - char* errMsg; - - /** - * Default constructor. Creates empty error info. - */ - JniErrorInfo(); - - /** - * Constructor. - * - * @param code Code. - * @param errCls Error class. - * @param errMsg Error message. - */ - JniErrorInfo(int code, const char* errCls, const char* errMsg); - - /** - * Copy constructor. - * - * @param other Other instance. - */ - JniErrorInfo(const JniErrorInfo& other); - - /** - * Assignment operator overload. - * - * @param other Other instance. - * @return This instance. - */ - JniErrorInfo& operator=(const JniErrorInfo& other); - - /** - * Destructor. - */ - ~JniErrorInfo(); - }; - - /** - * Unmanaged context. - */ - class IGNITE_IMPORT_EXPORT JniContext { - public: - static JniContext* Create(char** opts, int optsLen, JniHandlers hnds); - static JniContext* Create(char** opts, int optsLen, JniHandlers hnds, JniErrorInfo* errInfo); - static int Reallocate(long long memPtr, int cap); - static void Detach(); - static void Release(jobject obj); - - jobject IgnitionStart(char* cfgPath, char* name, int factoryId, long long dataPtr); - jobject IgnitionStart(char* cfgPath, char* name, int factoryId, long long dataPtr, JniErrorInfo* errInfo); - jobject IgnitionInstance(char* name); - jobject IgnitionInstance(char* name, JniErrorInfo* errInfo); - long long IgnitionEnvironmentPointer(char* name); - long long IgnitionEnvironmentPointer(char* name, JniErrorInfo* errInfo); - bool IgnitionStop(char* name, bool cancel); - bool IgnitionStop(char* name, bool cancel, JniErrorInfo* errInfo); - void IgnitionStopAll(bool cancel); - void IgnitionStopAll(bool cancel, JniErrorInfo* errInfo); - - void ProcessorReleaseStart(jobject obj); - jobject ProcessorProjection(jobject obj); - jobject ProcessorCache(jobject obj, const char* name); - jobject ProcessorCache(jobject obj, const char* name, JniErrorInfo* errInfo); - jobject ProcessorCreateCache(jobject obj, const char* name); - jobject ProcessorCreateCache(jobject obj, const char* name, JniErrorInfo* errInfo); - jobject ProcessorGetOrCreateCache(jobject obj, const char* name); - jobject ProcessorGetOrCreateCache(jobject obj, const char* name, JniErrorInfo* errInfo); - jobject ProcessorAffinity(jobject obj, const char* name); - jobject ProcessorDataStreamer(jobject obj, const char* name, bool keepPortable); - jobject ProcessorTransactions(jobject obj); - jobject ProcessorCompute(jobject obj, jobject prj); - jobject ProcessorMessage(jobject obj, jobject prj); - jobject ProcessorEvents(jobject obj, jobject prj); - jobject ProcessorServices(jobject obj, jobject prj); - jobject ProcessorExtensions(jobject obj); - - long long TargetInStreamOutLong(jobject obj, int type, long long memPtr, JniErrorInfo* errInfo = NULL); - void TargetInStreamOutStream(jobject obj, int opType, long long inMemPtr, long long outMemPtr, JniErrorInfo* errInfo = NULL); - jobject TargetInStreamOutObject(jobject obj, int type, long long memPtr, JniErrorInfo* errInfo = NULL); - void TargetInObjectStreamOutStream(jobject obj, int opType, void* arg, long long inMemPtr, long long outMemPtr, JniErrorInfo* errInfo = NULL); - long long TargetOutLong(jobject obj, int opType, JniErrorInfo* errInfo = NULL); - void TargetOutStream(jobject obj, int opType, long long memPtr, JniErrorInfo* errInfo = NULL); - jobject TargetOutObject(jobject obj, int opType, JniErrorInfo* errInfo = NULL); - void TargetListenFuture(jobject obj, long long futId, int typ); - void TargetListenFutureForOperation(jobject obj, long long futId, int typ, int opId); - - int AffinityPartitions(jobject obj); - - jobject CacheWithSkipStore(jobject obj); - jobject CacheWithNoRetries(jobject obj); - jobject CacheWithExpiryPolicy(jobject obj, long long create, long long update, long long access); - jobject CacheWithAsync(jobject obj); - jobject CacheWithKeepPortable(jobject obj); - void CacheClear(jobject obj, JniErrorInfo* errInfo = NULL); - void CacheRemoveAll(jobject obj, JniErrorInfo* errInfo = NULL); - jobject CacheOutOpQueryCursor(jobject obj, int type, long long memPtr, JniErrorInfo* errInfo = NULL); - jobject CacheOutOpContinuousQuery(jobject obj, int type, long long memPtr); - jobject CacheIterator(jobject obj); - jobject CacheLocalIterator(jobject obj, int peekModes); - void CacheEnterLock(jobject obj, long long id); - void CacheExitLock(jobject obj, long long id); - bool CacheTryEnterLock(jobject obj, long long id, long long timeout); - void CacheCloseLock(jobject obj, long long id); - void CacheRebalance(jobject obj, long long futId); - int CacheSize(jobject obj, int peekModes, bool loc, JniErrorInfo* errInfo = NULL); - - void CacheStoreCallbackInvoke(jobject obj, long long memPtr); - - void ComputeWithNoFailover(jobject obj); - void ComputeWithTimeout(jobject obj, long long timeout); - void ComputeExecuteNative(jobject obj, long long taskPtr, long long topVer); - - void ContinuousQueryClose(jobject obj); - void* ContinuousQueryGetInitialQueryCursor(jobject obj); - - void DataStreamerListenTopology(jobject obj, long long ptr); - bool DataStreamerAllowOverwriteGet(jobject obj); - void DataStreamerAllowOverwriteSet(jobject obj, bool val); - bool DataStreamerSkipStoreGet(jobject obj); - void DataStreamerSkipStoreSet(jobject obj, bool val); - int DataStreamerPerNodeBufferSizeGet(jobject obj); - void DataStreamerPerNodeBufferSizeSet(jobject obj, int val); - int DataStreamerPerNodeParallelOperationsGet(jobject obj); - void DataStreamerPerNodeParallelOperationsSet(jobject obj, int val); - - jobject MessagingWithAsync(jobject obj); - - jobject ProjectionForOthers(jobject obj, jobject prj); - jobject ProjectionForRemotes(jobject obj); - jobject ProjectionForDaemons(jobject obj); - jobject ProjectionForRandom(jobject obj); - jobject ProjectionForOldest(jobject obj); - jobject ProjectionForYoungest(jobject obj); - void ProjectionResetMetrics(jobject obj); - jobject ProjectionOutOpRet(jobject obj, int type, long long memPtr); - - void QueryCursorIterator(jobject obj, JniErrorInfo* errInfo = NULL); - bool QueryCursorIteratorHasNext(jobject obj, JniErrorInfo* errInfo = NULL); - void QueryCursorClose(jobject obj, JniErrorInfo* errInfo = NULL); - - long long TransactionsStart(jobject obj, int concurrency, int isolation, long long timeout, int txSize); - int TransactionsCommit(jobject obj, long long id); - void TransactionsCommitAsync(jobject obj, long long id, long long futId); - int TransactionsRollback(jobject obj, long long id); - void TransactionsRollbackAsync(jobject obj, long long id, long long futId); - int TransactionsClose(jobject obj, long long id); - int TransactionsState(jobject obj, long long id); - bool TransactionsSetRollbackOnly(jobject obj, long long id); - void TransactionsResetMetrics(jobject obj); - - jobject EventsWithAsync(jobject obj); - bool EventsStopLocalListen(jobject obj, long long hnd); - void EventsLocalListen(jobject obj, long long hnd, int type); - bool EventsIsEnabled(jobject obj, int type); - - jobject ServicesWithAsync(jobject obj); - jobject ServicesWithServerKeepPortable(jobject obj); - void ServicesCancel(jobject obj, char* name); - void ServicesCancelAll(jobject obj); - void* ServicesGetServiceProxy(jobject obj, char* name, bool sticky); - - jobject Acquire(jobject obj); - - void DestroyJvm(); - void ThrowToJava(char* errMsg); - private: - JniJvm* jvm; - JniHandlers hnds; - - JniContext(JniJvm* jvm, JniHandlers hnds); - - JNIEnv* Attach(); - void ExceptionCheck(JNIEnv* env); - void ExceptionCheck(JNIEnv* env, JniErrorInfo* errInfo); - jobject LocalToGlobal(JNIEnv* env, jobject obj); - jobject ProcessorCache0(jobject proc, const char* name, jmethodID mthd, JniErrorInfo* errInfo); - }; - - JNIEXPORT jlong JNICALL JniCacheStoreCreate(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - JNIEXPORT jint JNICALL JniCacheStoreInvoke(JNIEnv *env, jclass cls, jlong envPtr, jlong objPtr, jlong memPtr, jobject cb); - JNIEXPORT void JNICALL JniCacheStoreDestroy(JNIEnv *env, jclass cls, jlong envPtr, jlong objPtr); - JNIEXPORT jlong JNICALL JniCacheStoreSessionCreate(JNIEnv *env, jclass cls, jlong envPtr, jlong storePtr); - - JNIEXPORT jlong JNICALL JniCacheEntryFilterCreate(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - JNIEXPORT jint JNICALL JniCacheEntryFilterApply(JNIEnv *env, jclass cls, jlong envPtr, jlong objPtr, jlong memPtr); - JNIEXPORT void JNICALL JniCacheEntryFilterDestroy(JNIEnv *env, jclass cls, jlong envPtr, jlong objPtr); - - JNIEXPORT void JNICALL JniCacheInvoke(JNIEnv *env, jclass cls, jlong envPtr, jlong inMemPtr, jlong outMemPtr); - - JNIEXPORT void JNICALL JniComputeTaskMap(JNIEnv *env, jclass cls, jlong envPtr, jlong taskPtr, jlong inMemPtr, jlong outMemPtr); - JNIEXPORT jint JNICALL JniComputeTaskJobResult(JNIEnv *env, jclass cls, jlong envPtr, jlong taskPtr, jlong jobPtr, jlong memPtr); - JNIEXPORT void JNICALL JniComputeTaskReduce(JNIEnv *env, jclass cls, jlong envPtr, jlong taskPtr); - JNIEXPORT void JNICALL JniComputeTaskComplete(JNIEnv *env, jclass cls, jlong envPtr, jlong taskPtr, jlong memPtr); - JNIEXPORT jint JNICALL JniComputeJobSerialize(JNIEnv *env, jclass cls, jlong envPtr, jlong jobPtr, jlong memPtr); - JNIEXPORT jlong JNICALL JniComputeJobCreate(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - JNIEXPORT void JNICALL JniComputeJobExecute(JNIEnv *env, jclass cls, jlong envPtr, jlong jobPtr, jint cancel, jlong memPtr); - JNIEXPORT void JNICALL JniComputeJobCancel(JNIEnv *env, jclass cls, jlong envPtr, jlong jobPtr); - JNIEXPORT void JNICALL JniComputeJobDestroy(JNIEnv *env, jclass cls, jlong envPtr, jlong jobPtr); - - JNIEXPORT void JNICALL JniContinuousQueryListenerApply(JNIEnv *env, jclass cls, jlong envPtr, jlong cbPtr, jlong memPtr); - JNIEXPORT jlong JNICALL JniContinuousQueryFilterCreate(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - JNIEXPORT jint JNICALL JniContinuousQueryFilterApply(JNIEnv *env, jclass cls, jlong envPtr, jlong filterPtr, jlong memPtr); - JNIEXPORT void JNICALL JniContinuousQueryFilterRelease(JNIEnv *env, jclass cls, jlong envPtr, jlong filterPtr); - - JNIEXPORT void JNICALL JniDataStreamerTopologyUpdate(JNIEnv *env, jclass cls, jlong envPtr, jlong ldrPtr, jlong topVer, jint topSize); - JNIEXPORT void JNICALL JniDataStreamerStreamReceiverInvoke(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr, jobject cache, jlong memPtr, jboolean keepPortable); - - JNIEXPORT void JNICALL JniFutureByteResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jint res); - JNIEXPORT void JNICALL JniFutureBoolResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jint res); - JNIEXPORT void JNICALL JniFutureShortResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jint res); - JNIEXPORT void JNICALL JniFutureCharResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jint res); - JNIEXPORT void JNICALL JniFutureIntResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jint res); - JNIEXPORT void JNICALL JniFutureFloatResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jfloat res); - JNIEXPORT void JNICALL JniFutureLongResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jlong res); - JNIEXPORT void JNICALL JniFutureDoubleResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jdouble res); - JNIEXPORT void JNICALL JniFutureObjectResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jlong memPtr); - JNIEXPORT void JNICALL JniFutureNullResult(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr); - JNIEXPORT void JNICALL JniFutureError(JNIEnv *env, jclass cls, jlong envPtr, jlong futPtr, jlong memPtr); - - JNIEXPORT void JNICALL JniLifecycleEvent(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr, jint evt); - - JNIEXPORT void JNICALL JniMemoryReallocate(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr, jint cap); - - JNIEXPORT jlong JNICALL JniMessagingFilterCreate(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - JNIEXPORT jint JNICALL JniMessagingFilterApply(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr, jlong memPtr); - JNIEXPORT void JNICALL JniMessagingFilterDestroy(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr); - - JNIEXPORT jlong JNICALL JniEventFilterCreate(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - JNIEXPORT jint JNICALL JniEventFilterApply(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr, jlong memPtr); - JNIEXPORT void JNICALL JniEventFilterDestroy(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr); - - JNIEXPORT jlong JNICALL JniServiceInit(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - JNIEXPORT void JNICALL JniServiceExecute(JNIEnv *env, jclass cls, jlong envPtr, jlong svcPtr, jlong memPtr); - JNIEXPORT void JNICALL JniServiceCancel(JNIEnv *env, jclass cls, jlong envPtr, jlong svcPtr, jlong memPtr); - JNIEXPORT void JNICALL JniServiceInvokeMethod(JNIEnv *env, jclass cls, jlong envPtr, jlong svcPtr, jlong inMemPtr, jlong outMemPtr); - JNIEXPORT jint JNICALL JniClusterNodeFilterApply(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - - JNIEXPORT jlong JNICALL JniNodeInfo(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr); - - JNIEXPORT void JNICALL JniOnStart(JNIEnv *env, jclass cls, jlong envPtr, jobject proc, jlong memPtr); - JNIEXPORT void JNICALL JniOnStop(JNIEnv *env, jclass cls, jlong envPtr); - - JNIEXPORT jlong JNICALL JniExtensionCallbackInLongOutLong(JNIEnv *env, jclass cls, jlong envPtr, jint typ, jlong arg1); - JNIEXPORT jlong JNICALL JniExtensionCallbackInLongLongOutLong(JNIEnv *env, jclass cls, jlong envPtr, jint typ, jlong arg1, jlong arg2); - } - } -} - -#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/os/linux/include/Makefile.am ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/os/linux/include/Makefile.am b/modules/platform/src/main/cpp/common/os/linux/include/Makefile.am deleted file mode 100644 index 68e45e6..0000000 --- a/modules/platform/src/main/cpp/common/os/linux/include/Makefile.am +++ /dev/null @@ -1,21 +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. -## - -ACLOCAL_AMFLAGS = "-Im4" - -nobase_include_HEADERS = ignite/common/common.h \ - ignite/common/concurrent_os.h http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/common.h ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/common.h b/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/common.h deleted file mode 100644 index 6577ad8..0000000 --- a/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/common.h +++ /dev/null @@ -1,81 +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_COMMON_OS -#define _IGNITE_COMMON_OS - -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif - -#if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) - #define IGNITE_EXPORT __attribute__((visibility("default"))) - #define IGNITE_IMPORT __attribute__((visibility("default"))) -#else - #define IGNITE_EXPORT - #define IGNITE_IMPORT -#endif - -#define IGNITE_CALL - -#ifdef IGNITE_IMPL - #define IGNITE_IMPORT_EXPORT IGNITE_EXPORT -#else - #define IGNITE_IMPORT_EXPORT IGNITE_IMPORT -#endif - -/** - * Common construction to disable copy constructor and assignment for class. - */ -#define IGNITE_NO_COPY_ASSIGNMENT(cls) \ - cls(const cls& src); \ - cls& operator= (const cls& other); - -namespace ignite -{ - namespace common - { - /** - * Helper class to manage attached threads. - */ - class AttachHelper - { - public: - /** - * Destructor. - */ - ~AttachHelper(); - - /** - * Callback invoked on successful thread attach ot JVM. - */ - static void OnThreadAttach(); - private: - /** - * Helper method to allocate attach key. - */ - static void AllocateAttachKey(); - - /** - * Attach key destructor. - */ - static void DestroyAttachKey(void* key); - }; - } -} - -#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/concurrent_os.h ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/concurrent_os.h b/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/concurrent_os.h deleted file mode 100644 index 63798b1..0000000 --- a/modules/platform/src/main/cpp/common/os/linux/include/ignite/common/concurrent_os.h +++ /dev/null @@ -1,394 +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_COMMON_CONCURRENT_OS -#define _IGNITE_COMMON_CONCURRENT_OS - -#include <map> -#include <stdint.h> -#include <pthread.h> - -#include "ignite/common/common.h" - -namespace ignite -{ - namespace common - { - namespace concurrent - { - /** - * Static class to manage memory visibility semantics. - */ - class IGNITE_IMPORT_EXPORT Memory { - public: - /** - * Full fence. - */ - static void Fence(); - }; - - /** - * Critical section. - */ - class IGNITE_IMPORT_EXPORT CriticalSection { - public: - /** - * Constructor. - */ - CriticalSection(); - - /** - * Destructor. - */ - ~CriticalSection(); - - /** - * Enter critical section. - */ - void Enter(); - - /** - * Leave critical section. - */ - void Leave(); - private: - pthread_mutex_t mux; - - IGNITE_NO_COPY_ASSIGNMENT(CriticalSection) - }; - - /** - * Special latch with count = 1. - */ - class IGNITE_IMPORT_EXPORT SingleLatch - { - public: - /** - * Constructor. - */ - SingleLatch(); - - /** - * Destructor. - */ - ~SingleLatch(); - - /** - * Perform the countdown. - */ - void CountDown(); - - /** - * Await the countdown. - */ - void Await(); - private: - /** Mutex. */ - pthread_mutex_t mux; - - /** Condition. */ - pthread_cond_t cond; - - /** Ready flag. */ - bool ready; - - IGNITE_NO_COPY_ASSIGNMENT(SingleLatch) - }; - - /** - * Primitives for atomic access. - */ - class IGNITE_IMPORT_EXPORT Atomics - { - public: - /** - * Update the 32-bit integer value if it is equal to expected value. - * - * @param ptr Pointer. - * @param expVal Expected value. - * @param newVal New value. - * @return True if update occurred as a result of this call, false otherwise. - */ - static bool CompareAndSet32(int32_t* ptr, int32_t expVal, int32_t newVal); - - /** - * Update the 32-bit integer value if it is equal to expected value. - * - * @param ptr Pointer. - * @param expVal Expected value. - * @param newVal New value. - * @return Value which were observed during CAS attempt. - */ - static int32_t CompareAndSet32Val(int32_t* ptr, int32_t expVal, int32_t newVal); - - /** - * Increment 32-bit integer and return new value. - * - * @param ptr Pointer. - * @return Value after increment. - */ - static int32_t IncrementAndGet32(int32_t* ptr); - - /** - * Decrement 32-bit integer and return new value. - * - * @param ptr Pointer. - * @return Value after decrement. - */ - static int32_t DecrementAndGet32(int32_t* ptr); - - /** - * Update the 64-bit integer value if it is equal to expected value. - * - * @param ptr Pointer. - * @param expVal Expected value. - * @param newVal New value. - * @return True if update occurred as a result of this call, false otherwise. - */ - static bool CompareAndSet64(int64_t* ptr, int64_t expVal, int64_t newVal); - - /** - * Update the 64-bit integer value if it is equal to expected value. - * - * @param ptr Pointer. - * @param expVal Expected value. - * @param newVal New value. - * @return Value which were observed during CAS attempt. - */ - static int64_t CompareAndSet64Val(int64_t* ptr, int64_t expVal, int64_t newVal); - - /** - * Increment 64-bit integer and return new value. - * - * @param ptr Pointer. - * @return Value after increment. - */ - static int64_t IncrementAndGet64(int64_t* ptr); - - /** - * Decrement 64-bit integer and return new value. - * - * @param ptr Pointer. - * @return Value after decrement. - */ - static int64_t DecrementAndGet64(int64_t* ptr); - }; - - /** - * Thread-local entry. - */ - class IGNITE_IMPORT_EXPORT ThreadLocalEntry - { - public: - /** - * Virtual destructor to allow for correct typed entries cleanup. - */ - virtual ~ThreadLocalEntry() - { - // No-op. - } - }; - - /** - * Typed thread-local entry. - */ - template<typename T> - class IGNITE_IMPORT_EXPORT ThreadLocalTypedEntry : public ThreadLocalEntry - { - public: - /** - * Constructor. - * - * @param val Value. - */ - ThreadLocalTypedEntry(T val) : val(val) - { - // No-op. - } - - ~ThreadLocalTypedEntry() - { - // No-op. - } - - /** - * Get value. - * - * @return Value. - */ - T Get() - { - return val; - } - private: - /** Value. */ - T val; - }; - - /** - * Thread-local abstraction. - */ - class IGNITE_IMPORT_EXPORT ThreadLocal - { - public: - /** - * Get next available index to be used in thread-local storage. - * - * @return Index. - */ - static int32_t NextIndex(); - - /** - * Get value by index. - * - * @param idx Index. - * @return Value associated with the index or NULL. - */ - template<typename T> - static T Get(int32_t idx) - { - void* linuxVal = Get0(); - - if (linuxVal) - { - std::map<int32_t, ThreadLocalEntry*>* map = - static_cast<std::map<int32_t, ThreadLocalEntry*>*>(linuxVal); - - ThreadLocalTypedEntry<T>* entry = static_cast<ThreadLocalTypedEntry<T>*>((*map)[idx]); - - if (entry) - return entry->Get(); - } - - return T(); - } - - /** - * Set value at the given index. - * - * @param idx Index. - * @param val Value to be associated with the index. - */ - template<typename T> - static void Set(int32_t idx, const T& val) - { - void* linuxVal = Get0(); - - if (linuxVal) - { - std::map<int32_t, ThreadLocalEntry*>* map = - static_cast<std::map<int32_t, ThreadLocalEntry*>*>(linuxVal); - - ThreadLocalEntry* appVal = (*map)[idx]; - - if (appVal) - delete appVal; - - (*map)[idx] = new ThreadLocalTypedEntry<T>(val); - } - else - { - std::map<int32_t, ThreadLocalEntry*>* map = new std::map<int32_t, ThreadLocalEntry*>(); - - Set0(map); - - (*map)[idx] = new ThreadLocalTypedEntry<T>(val); - } - } - - /** - * Remove value at the given index. - * - * @param idx Index. - */ - static void Remove(int32_t idx); - - /** - * Internal thread-local map clear routine. - * - * @param mapPtr Pointer to map. - */ - static void Clear0(void* mapPtr); - - private: - /** - * Internal get routine. - * - * @param Associated value. - */ - static void* Get0(); - - /** - * Internal set routine. - * - * @param ptr Pointer. - */ - static void Set0(void* ptr); - }; - - /** - * Thread-local instance. Simplifies API avoiding direct index allocations. - */ - template<typename T> - class IGNITE_IMPORT_EXPORT ThreadLocalInstance - { - public: - /** - * Constructor. - */ - ThreadLocalInstance() : idx(ThreadLocal::NextIndex()) - { - // No-op. - } - - /** - * Get value. - * - * @return Value. - */ - T Get() - { - return ThreadLocal::Get<T>(idx); - } - - /** - * Set instance. - * - * @param val Value. - */ - void Set(const T& val) - { - ThreadLocal::Set<T>(idx, val); - } - - /** - * Remove instance. - */ - void Remove() - { - ThreadLocal::Remove(idx); - } - - private: - /** Index. */ - int32_t idx; - }; - } - } -} - -#endif \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/f0bac562/modules/platform/src/main/cpp/common/os/linux/src/common.cpp ---------------------------------------------------------------------- diff --git a/modules/platform/src/main/cpp/common/os/linux/src/common.cpp b/modules/platform/src/main/cpp/common/os/linux/src/common.cpp deleted file mode 100644 index c0cccdc..0000000 --- a/modules/platform/src/main/cpp/common/os/linux/src/common.cpp +++ /dev/null @@ -1,59 +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 <pthread.h> - -#include "ignite/common/common.h" -#include "ignite/common/java.h" - -using namespace ignite::common::java; - -namespace ignite -{ - namespace common - { - /** Key indicating that the thread is attached. */ - static pthread_key_t attachKey; - - /** Helper to ensure that attach key is allocated only once. */ - static pthread_once_t attachKeyInit = PTHREAD_ONCE_INIT; - - AttachHelper::~AttachHelper() - { - JniContext::Detach(); - } - - void AttachHelper::OnThreadAttach() - { - pthread_once(&attachKeyInit, AllocateAttachKey); - - void* val = pthread_getspecific(attachKey); - - if (!val) - pthread_setspecific(attachKey, new AttachHelper()); - } - - void AttachHelper::AllocateAttachKey() - { - pthread_key_create(&attachKey, DestroyAttachKey); - } - - void AttachHelper::DestroyAttachKey(void* key) - { - delete reinterpret_cast<AttachHelper*>(key); - } - } -}
