chore: archive old C++ CMake build to .deprecated-cmake/; Rust is now canonical

This commit is contained in:
2026-04-28 22:47:45 +08:00
parent b7f756bc2b
commit 313315cd3f
9 changed files with 0 additions and 0 deletions
@@ -0,0 +1,152 @@
/*
* JNI 桥:java 包 cn.craftlabs.auth.internal.NativeBridge 与 craftlabs_auth.h C API 之间的映射。
*
* 版权所有 © 广州创飞人工智能技术有限公司
* 开发者:huangping@craftlabs.cn
*/
#include <cstdint>
#include <jni.h>
#include "craftlabs_auth.h"
namespace {
CraftHandle from_jlong(jlong ptr) {
return reinterpret_cast<CraftHandle>(static_cast<uintptr_t>(ptr));
}
// craft_result mapper to Java AuthResult (rename for consistency)
jobject make_craft_result(JNIEnv* env, const CraftResult& r) {
jclass cls = env->FindClass("cn/craftlabs/auth/AuthResult");
if (!cls) {
return nullptr;
}
jmethodID ctor = env->GetMethodID(cls, "<init>", "(ZLjava/lang/String;)V");
if (!ctor) {
return nullptr;
}
jboolean ok = (r.success != 0) ? JNI_TRUE : JNI_FALSE;
jstring msg = env->NewStringUTF(r.message ? r.message : "");
if (!msg) {
return nullptr;
}
jobject out = env->NewObject(cls, ctor, ok, msg);
env->DeleteLocalRef(msg);
return out;
}
jobject make_license_info(JNIEnv* env, LicenseInfo* info) {
if (!info) {
return nullptr;
}
jclass cls = env->FindClass("cn/craftlabs/auth/LicenseInfo");
if (!cls) {
return nullptr;
}
jmethodID ctor = env->GetMethodID(cls, "<init>", "(ZLjava/util/Date;Ljava/util/Map;)V");
if (!ctor) {
return nullptr;
}
jboolean licensed = info->is_licensed ? JNI_TRUE : JNI_FALSE;
jobject date = nullptr;
if (info->expiration_date != 0) {
jclass dateCls = env->FindClass("java/util/Date");
jmethodID dateCtor = env->GetMethodID(dateCls, "<init>", "(J)V");
jlong ms = static_cast<jlong>(info->expiration_date) * 1000LL;
date = env->NewObject(dateCls, dateCtor, ms);
}
jclass mapCls = env->FindClass("java/util/HashMap");
jmethodID mapCtor = env->GetMethodID(mapCls, "<init>", "()V");
jobject map = env->NewObject(mapCls, mapCtor);
jmethodID put = env->GetMethodID(mapCls, "put",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
for (int i = 0; i < info->feature_count; ++i) {
const char* name = info->feature_names[i];
int v = info->feature_values[i];
jstring jn = env->NewStringUTF(name ? name : "");
jclass boolCls = env->FindClass("java/lang/Boolean");
jmethodID valueOf =
env->GetStaticMethodID(boolCls, "valueOf", "(Z)Ljava/lang/Boolean;");
jobject jb = env->CallStaticObjectMethod(boolCls, valueOf, v ? JNI_TRUE : JNI_FALSE);
env->CallObjectMethod(map, put, jn, jb);
env->DeleteLocalRef(jn);
env->DeleteLocalRef(jb);
}
jobject out = env->NewObject(cls, ctor, licensed, date, map);
if (date) {
env->DeleteLocalRef(date);
}
env->DeleteLocalRef(map);
return out;
}
} // namespace
extern "C" {
JNIEXPORT jlong JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeInitialize(
JNIEnv* env, jclass, jstring configJson) {
const char* utf = configJson ? env->GetStringUTFChars(configJson, nullptr) : nullptr;
CraftHandle h = craft_initialize(utf ? utf : "{}");
if (configJson && utf) {
env->ReleaseStringUTFChars(configJson, utf);
}
return static_cast<jlong>(reinterpret_cast<uintptr_t>(h));
}
JNIEXPORT void JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeDestroy(JNIEnv*,
jclass,
jlong handle) {
craft_destroy(from_jlong(handle));
}
JNIEXPORT jobject JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeActivate(
JNIEnv* env, jclass, jlong handle, jstring licenseKey) {
const char* utf = licenseKey ? env->GetStringUTFChars(licenseKey, nullptr) : "";
CraftResult r = craft_activate(from_jlong(handle), utf ? utf : "");
if (licenseKey && utf) {
env->ReleaseStringUTFChars(licenseKey, utf);
}
return make_craft_result(env, r);
}
JNIEXPORT jobject JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeCheckLicense(
JNIEnv* env, jclass, jlong handle) {
CraftResult r = craft_check_license(from_jlong(handle));
return make_craft_result(env, r);
}
JNIEXPORT jobject JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeGetLicenseInfo(
JNIEnv* env, jclass, jlong handle) {
LicenseInfo* info = craft_get_license_info(from_jlong(handle));
jobject jinfo = make_license_info(env, info);
craft_free_license_info(info);
return jinfo;
}
JNIEXPORT jboolean JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeHasFeature(
JNIEnv* env, jclass, jlong handle, jstring featureName) {
const char* utf = featureName ? env->GetStringUTFChars(featureName, nullptr) : "";
int v = craft_has_feature(from_jlong(handle), utf ? utf : "");
if (featureName && utf) {
env->ReleaseStringUTFChars(featureName, utf);
}
return v ? JNI_TRUE : JNI_FALSE;
}
JNIEXPORT jobject JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeRelease(JNIEnv* env,
jclass,
jlong handle) {
CraftResult r = craft_release(from_jlong(handle));
return make_craft_result(env, r);
}
JNIEXPORT jobject JNICALL Java_cn_craftlabs_auth_internal_NativeBridge_nativeHeartbeat(
JNIEnv* env, jclass, jlong handle) {
CraftResult r = craft_heartbeat(from_jlong(handle));
return make_craft_result(env, r);
}
}