25 #include <com/avpkit/ferry/Ferry.h>
28 namespace com {
namespace avpkit {
namespace ferry {
39 typedef void (*CallbackFunc)(JavaVM* jvm,
void* closure);
41 static VS_API_FERRY
JNIHelper* getHelper();
44 inline static JavaVM* sGetVM()
46 return getHelper()->getVM();
48 inline static void sSetVM(JavaVM *jvm)
50 getHelper()->setVM(jvm);
52 inline static jint sGetJNIVersion()
54 return getHelper()->getJNIVersion();
56 inline static JNIEnv *sGetEnv()
58 return getHelper()->getEnv();
60 inline static void *sGetPointer(jobject pointerRef)
62 return getHelper()->getPointer(pointerRef);
64 inline static void *sSetPointer(jobject pointerRef,
void *newVal)
66 return getHelper()->setPointer(pointerRef, newVal);
68 inline static jobject sNewLocalRef(jobject ref)
70 return getHelper()->newLocalRef(ref);
72 inline static void sDeleteLocalRef(jobject ref)
74 return getHelper()->deleteLocalRef(ref);
76 inline static jobject sNewGlobalRef(jobject ref)
78 return getHelper()->newGlobalRef(ref);
80 inline static void sDeleteGlobalRef(jobject ref)
82 return getHelper()->deleteGlobalRef(ref);
84 inline static jweak sNewWeakGlobalRef(jobject ref)
86 return getHelper()->newWeakGlobalRef(ref);
88 inline static void sDeleteWeakGlobalRef(jweak ref)
90 return getHelper()->deleteWeakGlobalRef(ref);
92 inline static void sRegisterInitializationCallback(
93 CallbackFunc func,
void* closure)
95 return getHelper()->registerInitializationCallback(func, closure);
97 inline static void sRegisterTerminationCallback(
98 CallbackFunc func,
void* closure)
100 return getHelper()->registerTerminationCallback(func, closure);
103 VS_API_FERRY JavaVM* getVM();
104 VS_API_FERRY
void setVM(JavaVM* jvm);
106 VS_API_FERRY
void * getPointer(jobject pointerRef);
107 VS_API_FERRY
void * setPointer(jobject pointerRef,
void *newVal);
109 VS_API_FERRY jobject newLocalRef(jobject ref);
110 VS_API_FERRY
void deleteLocalRef(jobject ref);
111 VS_API_FERRY jobject newGlobalRef(jobject ref);
112 VS_API_FERRY
void deleteGlobalRef(jobject ref);
113 VS_API_FERRY jweak newWeakGlobalRef(jobject ref);
114 VS_API_FERRY
void deleteWeakGlobalRef(jweak ref);
116 VS_API_FERRY jint getJNIVersion();
117 VS_API_FERRY JNIEnv* getEnv();
129 VS_API_FERRY
void registerInitializationCallback(CallbackFunc,
void* closure);
130 VS_API_FERRY
void registerTerminationCallback(CallbackFunc,
void*closure);
142 VS_API_FERRY
static void shutdownHelper();
156 VS_API_FERRY int32_t isInterrupted();
158 VS_API_FERRY
bool isInterruptedException(jthrowable exception);
160 VS_API_FERRY
void interrupt();
167 jweak mJNIPointerReference_class;
168 jmethodID mJNIPointerReference_setPointer_mid;
169 jmethodID mJNIPointerReference_getPointer_mid;
170 jthrowable mOutOfMemoryErrorSingleton;
172 struct CallbackHelper {
173 CallbackFunc mCallback;
176 static void addCallback(std::list<CallbackHelper*>*, CallbackFunc,
void*closure);
177 static void processCallbacks(std::list<CallbackHelper*>*, JavaVM*,
bool execFunc=
true);
178 std::list<CallbackHelper*> mInitializationCallbacks;
179 std::list<CallbackHelper*> mTerminationCallbacks;
181 void waitForDebugger(JNIEnv*);
184 static volatile bool sDebuggerAttached;
187 jmethodID mThread_isInterrupted_mid;
188 jmethodID mThread_currentThread_mid;
189 jmethodID mThread_interrupt_mid;
191 jweak mInterruptedException_class;
The JNIHelper object contains a series of methods designed to assist functions when running inside a ...
VS_API_FERRY void throwOutOfMemoryError()
WARNING: Do not use logging in this class, and do not set any static file variables to values other t...