add ResultCode.fromInt

This commit is contained in:
Brenton Bostick 2023-01-31 12:40:59 -05:00
parent 056cef7292
commit 34ff813e2a
5 changed files with 39 additions and 65 deletions

View File

@ -105,6 +105,7 @@ jmethodID VirtualNetworkRoute_ctor;
jmethodID Event_fromInt_method;
jmethodID InetAddress_getByAddress_method;
jmethodID PeerRole_fromInt_method;
jmethodID ResultCode_fromInt_method;
//
// Instance fields
@ -160,13 +161,6 @@ jfieldID VirtualNetworkRoute_via_field;
// Static fields
//
jfieldID ResultCode_RESULT_ERROR_BAD_PARAMETER_field;
jfieldID ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field;
jfieldID ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field;
jfieldID ResultCode_RESULT_FATAL_ERROR_DATA_STORE_FAILED_field;
jfieldID ResultCode_RESULT_FATAL_ERROR_INTERNAL_field;
jfieldID ResultCode_RESULT_FATAL_ERROR_OUT_OF_MEMORY_field;
jfieldID ResultCode_RESULT_OK_field;
jfieldID VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_CONFIG_UPDATE_field;
jfieldID VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY_field;
jfieldID VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_DOWN_field;
@ -259,6 +253,7 @@ void setupJNICache(JavaVM *vm) {
EXCEPTIONANDNULLCHECK(Event_fromInt_method = env->GetStaticMethodID(Event_class, "fromInt", "(I)Lcom/zerotier/sdk/Event;"));
EXCEPTIONANDNULLCHECK(InetAddress_getByAddress_method = env->GetStaticMethodID(InetAddress_class, "getByAddress", "([B)Ljava/net/InetAddress;"));
EXCEPTIONANDNULLCHECK(PeerRole_fromInt_method = env->GetStaticMethodID(PeerRole_class, "fromInt", "(I)Lcom/zerotier/sdk/PeerRole;"));
EXCEPTIONANDNULLCHECK(ResultCode_fromInt_method = env->GetStaticMethodID(ResultCode_class, "fromInt", "(I)Lcom/zerotier/sdk/ResultCode;"));
//
// Instance fields
@ -314,13 +309,6 @@ void setupJNICache(JavaVM *vm) {
// Static fields
//
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_ERROR_BAD_PARAMETER_field = env->GetStaticFieldID(ResultCode_class, "RESULT_ERROR_BAD_PARAMETER", "Lcom/zerotier/sdk/ResultCode;"));
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field = env->GetStaticFieldID(ResultCode_class, "RESULT_ERROR_NETWORK_NOT_FOUND", "Lcom/zerotier/sdk/ResultCode;"));
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field = env->GetStaticFieldID(ResultCode_class, "RESULT_ERROR_UNSUPPORTED_OPERATION", "Lcom/zerotier/sdk/ResultCode;"));
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_FATAL_ERROR_DATA_STORE_FAILED_field = env->GetStaticFieldID(ResultCode_class, "RESULT_FATAL_ERROR_DATA_STORE_FAILED", "Lcom/zerotier/sdk/ResultCode;"));
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_FATAL_ERROR_INTERNAL_field = env->GetStaticFieldID(ResultCode_class, "RESULT_FATAL_ERROR_INTERNAL", "Lcom/zerotier/sdk/ResultCode;"));
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_FATAL_ERROR_OUT_OF_MEMORY_field = env->GetStaticFieldID(ResultCode_class, "RESULT_FATAL_ERROR_OUT_OF_MEMORY", "Lcom/zerotier/sdk/ResultCode;"));
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_OK_field = env->GetStaticFieldID(ResultCode_class, "RESULT_OK", "Lcom/zerotier/sdk/ResultCode;"));
EXCEPTIONANDNULLCHECK(VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_CONFIG_UPDATE_field = env->GetStaticFieldID(VirtualNetworkConfigOperation_class, "VIRTUAL_NETWORK_CONFIG_OPERATION_CONFIG_UPDATE", "Lcom/zerotier/sdk/VirtualNetworkConfigOperation;"));
EXCEPTIONANDNULLCHECK(VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY_field = env->GetStaticFieldID(VirtualNetworkConfigOperation_class, "VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY", "Lcom/zerotier/sdk/VirtualNetworkConfigOperation;"));
EXCEPTIONANDNULLCHECK(VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_DOWN_field = env->GetStaticFieldID(VirtualNetworkConfigOperation_class, "VIRTUAL_NETWORK_CONFIG_OPERATION_DOWN", "Lcom/zerotier/sdk/VirtualNetworkConfigOperation;"));

View File

@ -74,6 +74,7 @@ extern jmethodID VirtualNetworkRoute_ctor;
extern jmethodID Event_fromInt_method;
extern jmethodID InetAddress_getByAddress_method;
extern jmethodID PeerRole_fromInt_method;
extern jmethodID ResultCode_fromInt_method;
//
// Instance fields
@ -129,13 +130,6 @@ extern jfieldID VirtualNetworkRoute_via_field;
// Static fields
//
extern jfieldID ResultCode_RESULT_ERROR_BAD_PARAMETER_field;
extern jfieldID ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field;
extern jfieldID ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field;
extern jfieldID ResultCode_RESULT_FATAL_ERROR_DATA_STORE_FAILED_field;
extern jfieldID ResultCode_RESULT_FATAL_ERROR_INTERNAL_field;
extern jfieldID ResultCode_RESULT_FATAL_ERROR_OUT_OF_MEMORY_field;
extern jfieldID ResultCode_RESULT_OK_field;
extern jfieldID VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_CONFIG_UPDATE_field;
extern jfieldID VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_DESTROY_field;
extern jfieldID VirtualNetworkConfigOperation_VIRTUAL_NETWORK_CONFIG_OPERATION_DOWN_field;

View File

@ -32,48 +32,12 @@
jobject createResultObject(JNIEnv *env, ZT_ResultCode code)
{
jobject resultObject = NULL;
jfieldID field;
switch(code)
{
case ZT_RESULT_OK:
case ZT_RESULT_OK_IGNORED:
LOGV("ZT_RESULT_OK");
field = ResultCode_RESULT_OK_field;
break;
case ZT_RESULT_FATAL_ERROR_OUT_OF_MEMORY:
LOGV("ZT_RESULT_FATAL_ERROR_OUT_OF_MEMORY");
field = ResultCode_RESULT_FATAL_ERROR_OUT_OF_MEMORY_field;
break;
case ZT_RESULT_FATAL_ERROR_DATA_STORE_FAILED:
LOGV("ZT_RESULT_FATAL_ERROR_DATA_STORE_FAILED");
field = ResultCode_RESULT_FATAL_ERROR_DATA_STORE_FAILED_field;
break;
case ZT_RESULT_ERROR_NETWORK_NOT_FOUND:
LOGV("ZT_RESULT_ERROR_NETWORK_NOT_FOUND");
field = ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field;
break;
case ZT_RESULT_ERROR_UNSUPPORTED_OPERATION:
LOGV("ZT_RESULT_ERROR_UNSUPPORTED_OPERATION");
field = ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field;
break;
case ZT_RESULT_ERROR_BAD_PARAMETER:
LOGV("ZT_RESULT_ERROR_BAD_PARAMETER");
field = ResultCode_RESULT_ERROR_BAD_PARAMETER_field;
break;
case ZT_RESULT_FATAL_ERROR_INTERNAL:
default:
LOGV("ZT_RESULT_FATAL_ERROR_INTERNAL");
field = ResultCode_RESULT_FATAL_ERROR_INTERNAL_field;
break;
jobject resultObject = env->CallStaticObjectMethod(ResultCode_class, ResultCode_fromInt_method, code);
if(env->ExceptionCheck() || resultObject == NULL) {
LOGE("Error creating ResultCode object");
return NULL;
}
resultObject = env->GetStaticObjectField(ResultCode_class, field);
if(env->ExceptionCheck() || resultObject == NULL)
{
LOGE("Error on GetStaticObjectField");
}
return resultObject;
}

View File

@ -656,6 +656,10 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
{
LOGE("Error creating Node: %d", rc);
resultObject = createResultObject(env, rc);
if (env->ExceptionCheck() || resultObject == NULL) {
return NULL;
}
if(node)
{
ZT_Node_delete(node);

View File

@ -34,6 +34,8 @@ package com.zerotier.sdk;
* occurs, the node should be considered to not be working correctly. These
* indicate serious problems like an inaccessible data store or a compile
* problem.</p>
*
* Defined in ZeroTierOne.h as ZT_ResultCode
*/
public enum ResultCode {
@ -69,10 +71,32 @@ public enum ResultCode {
RESULT_ERROR_BAD_PARAMETER(1002);
private final int id;
ResultCode(int id) { this.id = id; }
public int getValue() { return id; }
private final int id;
ResultCode(int id) {
this.id = id;
}
public static ResultCode fromInt(int id) {
switch (id) {
case 0:
return RESULT_OK;
case 100:
return RESULT_FATAL_ERROR_OUT_OF_MEMORY;
case 101:
return RESULT_FATAL_ERROR_DATA_STORE_FAILED;
case 102:
return RESULT_FATAL_ERROR_INTERNAL;
case 1000:
return RESULT_ERROR_NETWORK_NOT_FOUND;
case 1001:
return RESULT_ERROR_UNSUPPORTED_OPERATION;
case 1002:
return RESULT_ERROR_BAD_PARAMETER;
default:
throw new RuntimeException("Unhandled value: " + id);
}
}
public boolean isFatal(int id) {
return (id > 100 && id < 1000);