blob: ec98dc6a7128189b1e1b8aab47251d58ab122b6b [file] [log] [blame]
/*
* 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_JNI_JAVA
#define _IGNITE_JNI_JAVA
#include <stdint.h>
#include <jni.h>
#include "ignite/common/common.h"
namespace ignite
{
namespace jni
{
namespace java
{
/* Handlers for callbacks from Java. */
typedef int64_t(JNICALL *CacheStoreCreateHandler)(void* target, int64_t memPtr);
typedef int(JNICALL *CacheStoreInvokeHandler)(void* target, int64_t objPtr, int64_t memPtr);
typedef void(JNICALL *CacheStoreDestroyHandler)(void* target, int64_t objPtr);
typedef int64_t(JNICALL *CacheStoreSessionCreateHandler)(void* target, int64_t storePtr);
typedef int64_t(JNICALL *CacheEntryFilterCreateHandler)(void* target, int64_t memPtr);
typedef int(JNICALL *CacheEntryFilterApplyHandler)(void* target, int64_t ptr, int64_t memPtr);
typedef void(JNICALL *CacheEntryFilterDestroyHandler)(void* target, int64_t ptr);
typedef void(JNICALL *CacheInvokeHandler)(void* target, int64_t inMemPtr, int64_t outMemPtr);
typedef void(JNICALL *ComputeTaskMapHandler)(void* target, int64_t taskPtr, int64_t inMemPtr, int64_t outMemPtr);
typedef int(JNICALL *ComputeTaskJobResultHandler)(void* target, int64_t taskPtr, int64_t jobPtr, int64_t memPtr);
typedef void(JNICALL *ComputeTaskReduceHandler)(void* target, int64_t taskPtr);
typedef void(JNICALL *ComputeTaskCompleteHandler)(void* target, int64_t taskPtr, int64_t memPtr);
typedef int(JNICALL *ComputeJobSerializeHandler)(void* target, int64_t jobPtr, int64_t memPtr);
typedef int64_t(JNICALL *ComputeJobCreateHandler)(void* target, int64_t memPtr);
typedef void(JNICALL *ComputeJobExecuteHandler)(void* target, int64_t jobPtr, int cancel, int64_t memPtr);
typedef void(JNICALL *ComputeJobCancelHandler)(void* target, int64_t jobPtr);
typedef void(JNICALL *ComputeJobDestroyHandler)(void* target, int64_t jobPtr);
typedef void(JNICALL *ContinuousQueryListenerApplyHandler)(void* target, int64_t lsnrPtr, int64_t memPtr);
typedef int64_t(JNICALL *ContinuousQueryFilterCreateHandler)(void* target, int64_t memPtr);
typedef int(JNICALL *ContinuousQueryFilterApplyHandler)(void* target, int64_t filterPtr, int64_t memPtr);
typedef void(JNICALL *ContinuousQueryFilterReleaseHandler)(void* target, int64_t filterPtr);
typedef void(JNICALL *DataStreamerTopologyUpdateHandler)(void* target, int64_t ldrPtr, int64_t topVer, int topSize);
typedef void(JNICALL *DataStreamerStreamReceiverInvokeHandler)(void* target, int64_t ptr, void* cache, int64_t memPtr, unsigned char keepPortable);
typedef void(JNICALL *FutureByteResultHandler)(void* target, int64_t futAddr, int res);
typedef void(JNICALL *FutureBoolResultHandler)(void* target, int64_t futAddr, int res);
typedef void(JNICALL *FutureShortResultHandler)(void* target, int64_t futAddr, int res);
typedef void(JNICALL *FutureCharResultHandler)(void* target, int64_t futAddr, int res);
typedef void(JNICALL *FutureIntResultHandler)(void* target, int64_t futAddr, int res);
typedef void(JNICALL *FutureFloatResultHandler)(void* target, int64_t futAddr, float res);
typedef void(JNICALL *FutureLongResultHandler)(void* target, int64_t futAddr, int64_t res);
typedef void(JNICALL *FutureDoubleResultHandler)(void* target, int64_t futAddr, double res);
typedef void(JNICALL *FutureObjectResultHandler)(void* target, int64_t futAddr, int64_t memPtr);
typedef void(JNICALL *FutureNullResultHandler)(void* target, int64_t futAddr);
typedef void(JNICALL *FutureErrorHandler)(void* target, int64_t futAddr, int64_t memPtr);
typedef void(JNICALL *LifecycleEventHandler)(void* target, int64_t ptr, int evt);
typedef void(JNICALL *MemoryReallocateHandler)(void* target, int64_t memPtr, int cap);
typedef int64_t(JNICALL *MessagingFilterCreateHandler)(void* target, int64_t memPtr);
typedef int(JNICALL *MessagingFilterApplyHandler)(void* target, int64_t ptr, int64_t memPtr);
typedef void(JNICALL *MessagingFilterDestroyHandler)(void* target, int64_t ptr);
typedef int64_t(JNICALL *EventFilterCreateHandler)(void* target, int64_t memPtr);
typedef int(JNICALL *EventFilterApplyHandler)(void* target, int64_t ptr, int64_t memPtr);
typedef void(JNICALL *EventFilterDestroyHandler)(void* target, int64_t ptr);
typedef int64_t(JNICALL *ServiceInitHandler)(void* target, int64_t memPtr);
typedef void(JNICALL *ServiceExecuteHandler)(void* target, int64_t svcPtr, int64_t memPtr);
typedef void(JNICALL *ServiceCancelHandler)(void* target, int64_t svcPtr, int64_t memPtr);
typedef void(JNICALL *ServiceInvokeMethodHandler)(void* target, int64_t svcPtr, int64_t inMemPtr, int64_t outMemPtr);
typedef int(JNICALL *ClusterNodeFilterApplyHandler)(void* target, int64_t memPtr);
typedef int64_t(JNICALL *NodeInfoHandler)(void* target, int64_t memPtr);
typedef void(JNICALL *OnStartHandler)(void* target, void* proc, int64_t 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, const char* stackTraceChars, int stackTraceCharsLen, void* errData, int errDataLen);
typedef int64_t(JNICALL *ExtensionCallbackInLongOutLongHandler)(void* target, int typ, int64_t arg1);
typedef int64_t(JNICALL *ExtensionCallbackInLongLongOutLongHandler)(void* target, int typ, int64_t arg1, int64_t arg2);
typedef void(JNICALL *OnClientDisconnectedHandler)(void* target);
typedef void(JNICALL *OnClientReconnectedHandler)(void* target, unsigned char clusterRestarted);
typedef int64_t(JNICALL *AffinityFunctionInitHandler)(void* target, int64_t memPtr, void* baseFunc);
typedef int(JNICALL *AffinityFunctionPartitionHandler)(void* target, int64_t ptr, int64_t memPtr);
typedef void(JNICALL *AffinityFunctionAssignPartitionsHandler)(void* target, int64_t ptr, int64_t inMemPtr, int64_t outMemPtr);
typedef void(JNICALL *AffinityFunctionRemoveNodeHandler)(void* target, int64_t ptr, int64_t memPtr);
typedef void(JNICALL *AffinityFunctionDestroyHandler)(void* target, int64_t ptr);
typedef void(JNICALL *ConsoleWriteHandler)(const char* chars, int charsLen, unsigned char isErr);
typedef void(JNICALL *LoggerLogHandler)(void* target, int level, const char* messageChars, int messageCharsLen, const char* categoryChars, int categoryCharsLen, const char* errorInfoChars, int errorInfoCharsLen, int64_t memPtr);
typedef bool(JNICALL *LoggerIsLevelEnabledHandler)(void* target, int level);
typedef int64_t(JNICALL *InLongOutLongHandler)(void* target, int type, int64_t val);
typedef int64_t(JNICALL *InLongLongLongObjectOutLongHandler)(void* target, int type, int64_t val1, int64_t val2, int64_t val3, void* arg);
/**
* Is Java 9 or later is used.
*
* @return true if the Java 9 or later is in use.
*/
bool IGNITE_IMPORT_EXPORT IsJava9OrLater();
/**
* JNI handlers holder.
*/
struct JniHandlers {
void* target;
ErrorHandler error;
LoggerLogHandler loggerLog;
LoggerIsLevelEnabledHandler loggerIsLevelEnabled;
InLongOutLongHandler inLongOutLong;
InLongLongLongObjectOutLongHandler inLongLongLongObjectOutLong;
};
/**
* JNI Java members.
*/
struct JniJavaMembers {
jclass c_Class;
jmethodID m_Class_getName;
jclass c_Throwable;
jmethodID m_Throwable_getMessage;
jmethodID m_Throwable_printStackTrace;
jclass c_PlatformUtils;
jmethodID m_PlatformUtils_getFullStackTrace;
/**
* 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,
char** stackTrace, int* stackTraceLen);
};
/**
* JNI members.
*/
struct JniMembers {
jclass c_IgniteException;
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_PlatformTarget;
jmethodID m_PlatformTarget_inLongOutLong;
jmethodID m_PlatformTarget_inStreamOutLong;
jmethodID m_PlatformTarget_inStreamOutObject;
jmethodID m_PlatformTarget_outStream;
jmethodID m_PlatformTarget_outObject;
jmethodID m_PlatformTarget_inStreamAsync;
jmethodID m_PlatformTarget_inStreamOutObjectAsync;
jmethodID m_PlatformTarget_inStreamOutStream;
jmethodID m_PlatformTarget_inObjectStreamOutObjectStream;
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(int64_t memPtr, int cap);
static void Detach();
static void Release(jobject obj);
static void SetConsoleHandler(ConsoleWriteHandler consoleHandler);
static int RemoveConsoleHandler(ConsoleWriteHandler consoleHandler);
void IgnitionStart(char* cfgPath, char* name, int factoryId, int64_t dataPtr);
void IgnitionStart(char* cfgPath, char* name, int factoryId, int64_t dataPtr, JniErrorInfo* errInfo);
int64_t IgnitionEnvironmentPointer(char* name);
int64_t 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);
int64_t TargetInLongOutLong(jobject obj, int type, int64_t memPtr, JniErrorInfo* errInfo = NULL);
int64_t TargetInStreamOutLong(jobject obj, int type, int64_t memPtr, JniErrorInfo* errInfo = NULL);
void TargetInStreamOutStream(jobject obj, int opType, int64_t inMemPtr, int64_t outMemPtr, JniErrorInfo* errInfo = NULL);
jobject TargetInStreamOutObject(jobject obj, int type, int64_t memPtr, JniErrorInfo* errInfo = NULL);
jobject TargetInObjectStreamOutObjectStream(jobject obj, int opType, void* arg, int64_t inMemPtr, int64_t outMemPtr, JniErrorInfo* errInfo = NULL);
void TargetOutStream(jobject obj, int opType, int64_t memPtr, JniErrorInfo* errInfo = NULL);
jobject TargetOutObject(jobject obj, int opType, JniErrorInfo* errInfo = NULL);
void TargetInStreamAsync(jobject obj, int type, int64_t memPtr, JniErrorInfo* errInfo = NULL);
jobject TargetInStreamOutObjectAsync(jobject obj, int type, int64_t memPtr, JniErrorInfo* errInfo = NULL);
jobject CacheOutOpQueryCursor(jobject obj, int type, int64_t memPtr, JniErrorInfo* errInfo = NULL);
jobject CacheOutOpContinuousQuery(jobject obj, int type, int64_t memPtr, JniErrorInfo* errInfo = NULL);
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);
};
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);
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);
JNIEXPORT void JNICALL JniOnClientDisconnected(JNIEnv *env, jclass cls, jlong envPtr);
JNIEXPORT void JNICALL JniOnClientReconnected(JNIEnv *env, jclass cls, jlong envPtr, jboolean clusterRestarted);
JNIEXPORT jlong JNICALL JniAffinityFunctionInit(JNIEnv *env, jclass cls, jlong envPtr, jlong memPtr, jobject baseFunc);
JNIEXPORT jint JNICALL JniAffinityFunctionPartition(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr, jlong memPtr);
JNIEXPORT void JNICALL JniAffinityFunctionAssignPartitions(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr, jlong inMemPtr, jlong outMemPtr);
JNIEXPORT void JNICALL JniAffinityFunctionRemoveNode(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr, jlong memPtr);
JNIEXPORT void JNICALL JniAffinityFunctionDestroy(JNIEnv *env, jclass cls, jlong envPtr, jlong ptr);
JNIEXPORT void JNICALL JniConsoleWrite(JNIEnv *env, jclass cls, jstring str, jboolean isErr);
JNIEXPORT void JNICALL JniLoggerLog(JNIEnv *env, jclass cls, jlong envPtr, jint level, jstring message, jstring category, jstring errorInfo, jlong memPtr);
JNIEXPORT jboolean JNICALL JniLoggerIsLevelEnabled(JNIEnv *env, jclass cls, jlong envPtr, jint level);
JNIEXPORT jlong JNICALL JniInLongOutLong(JNIEnv *env, jclass cls, jlong envPtr, jint type, jlong val);
JNIEXPORT jlong JNICALL JniInLongLongLongObjectOutLong(JNIEnv *env, jclass cls, jlong envPtr, jint type, jlong val1, jlong val2, jlong val3, jobject arg);
}
}
}
#endif //_IGNITE_JNI_JAVA