add PeerRole.fromInt

This commit is contained in:
Brenton Bostick 2023-01-31 12:29:38 -05:00
parent 7c5f256d4a
commit 056cef7292
4 changed files with 36 additions and 29 deletions

View file

@ -104,6 +104,7 @@ jmethodID VirtualNetworkRoute_ctor;
jmethodID Event_fromInt_method; jmethodID Event_fromInt_method;
jmethodID InetAddress_getByAddress_method; jmethodID InetAddress_getByAddress_method;
jmethodID PeerRole_fromInt_method;
// //
// Instance fields // Instance fields
@ -159,9 +160,6 @@ jfieldID VirtualNetworkRoute_via_field;
// Static fields // Static fields
// //
jfieldID PeerRole_PEER_ROLE_LEAF_field;
jfieldID PeerRole_PEER_ROLE_MOON_field;
jfieldID PeerRole_PEER_ROLE_PLANET_field;
jfieldID ResultCode_RESULT_ERROR_BAD_PARAMETER_field; jfieldID ResultCode_RESULT_ERROR_BAD_PARAMETER_field;
jfieldID ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field; jfieldID ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field;
jfieldID ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field; jfieldID ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field;
@ -260,6 +258,7 @@ void setupJNICache(JavaVM *vm) {
EXCEPTIONANDNULLCHECK(Event_fromInt_method = env->GetStaticMethodID(Event_class, "fromInt", "(I)Lcom/zerotier/sdk/Event;")); 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(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;"));
// //
// Instance fields // Instance fields
@ -315,9 +314,6 @@ void setupJNICache(JavaVM *vm) {
// Static fields // Static fields
// //
EXCEPTIONANDNULLCHECK(PeerRole_PEER_ROLE_LEAF_field = env->GetStaticFieldID(PeerRole_class, "PEER_ROLE_LEAF", "Lcom/zerotier/sdk/PeerRole;"));
EXCEPTIONANDNULLCHECK(PeerRole_PEER_ROLE_MOON_field = env->GetStaticFieldID(PeerRole_class, "PEER_ROLE_MOON", "Lcom/zerotier/sdk/PeerRole;"));
EXCEPTIONANDNULLCHECK(PeerRole_PEER_ROLE_PLANET_field = env->GetStaticFieldID(PeerRole_class, "PEER_ROLE_PLANET", "Lcom/zerotier/sdk/PeerRole;"));
EXCEPTIONANDNULLCHECK(ResultCode_RESULT_ERROR_BAD_PARAMETER_field = env->GetStaticFieldID(ResultCode_class, "RESULT_ERROR_BAD_PARAMETER", "Lcom/zerotier/sdk/ResultCode;")); 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_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_ERROR_UNSUPPORTED_OPERATION_field = env->GetStaticFieldID(ResultCode_class, "RESULT_ERROR_UNSUPPORTED_OPERATION", "Lcom/zerotier/sdk/ResultCode;"));

View file

@ -73,6 +73,7 @@ extern jmethodID VirtualNetworkRoute_ctor;
extern jmethodID Event_fromInt_method; extern jmethodID Event_fromInt_method;
extern jmethodID InetAddress_getByAddress_method; extern jmethodID InetAddress_getByAddress_method;
extern jmethodID PeerRole_fromInt_method;
// //
// Instance fields // Instance fields
@ -128,9 +129,6 @@ extern jfieldID VirtualNetworkRoute_via_field;
// Static fields // Static fields
// //
extern jfieldID PeerRole_PEER_ROLE_LEAF_field;
extern jfieldID PeerRole_PEER_ROLE_MOON_field;
extern jfieldID PeerRole_PEER_ROLE_PLANET_field;
extern jfieldID ResultCode_RESULT_ERROR_BAD_PARAMETER_field; extern jfieldID ResultCode_RESULT_ERROR_BAD_PARAMETER_field;
extern jfieldID ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field; extern jfieldID ResultCode_RESULT_ERROR_NETWORK_NOT_FOUND_field;
extern jfieldID ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field; extern jfieldID ResultCode_RESULT_ERROR_UNSUPPORTED_OPERATION_field;

View file

@ -126,24 +126,12 @@ jobject createEvent(JNIEnv *env, ZT_Event event)
jobject createPeerRole(JNIEnv *env, ZT_PeerRole role) jobject createPeerRole(JNIEnv *env, ZT_PeerRole role)
{ {
jobject peerRoleObject = NULL; jobject peerRoleObject = env->CallStaticObjectMethod(PeerRole_class, PeerRole_fromInt_method, role);
if (env->ExceptionCheck() || peerRoleObject == NULL) {
jfieldID field; LOGE("Error creating PeerRole object");
switch(role) return NULL;
{
case ZT_PEER_ROLE_LEAF:
field = PeerRole_PEER_ROLE_LEAF_field;
break;
case ZT_PEER_ROLE_MOON:
field = PeerRole_PEER_ROLE_MOON_field;
break;
case ZT_PEER_ROLE_PLANET:
field = PeerRole_PEER_ROLE_PLANET_field;
break;
} }
peerRoleObject = env->GetStaticObjectField(PeerRole_class, field);
return peerRoleObject; return peerRoleObject;
} }

View file

@ -27,20 +27,45 @@
package com.zerotier.sdk; package com.zerotier.sdk;
/**
* What trust hierarchy role does this peer have?
*
* Defined in ZeroTierOne.h as ZT_PeerRole
*/
public enum PeerRole { public enum PeerRole {
/** /**
* An ordinary node * An ordinary node
*/ */
PEER_ROLE_LEAF, PEER_ROLE_LEAF(0),
/** /**
* moon root * moon root
*/ */
PEER_ROLE_MOON, PEER_ROLE_MOON(1),
/** /**
* planetary root * planetary root
*/ */
PEER_ROLE_PLANET PEER_ROLE_PLANET(2);
}
@SuppressWarnings({"FieldCanBeLocal", "unused"})
private final int id;
PeerRole(int id) {
this.id = id;
}
public static PeerRole fromInt(int id) {
switch (id) {
case 0:
return PEER_ROLE_LEAF;
case 1:
return PEER_ROLE_MOON;
case 2:
return PEER_ROLE_PLANET;
default:
throw new RuntimeException("Unhandled value: " + id);
}
}
}