realm java 源码疑问

Posted seebigsea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了realm java 源码疑问相关的知识,希望对你有一定的参考价值。

JNIEXPORT void JNICALL Java_io_realm_internal_Group_nativeWriteToFile(
    JNIEnv* env, jobject, jlong nativeGroupPtr, jstring jFileName, jbyteArray keyArray)
{
    TR_ENTER_PTR(nativeGroupPtr)
    StringData file_name;
    KeyBuffer key(env, keyArray);
    try {
        JStringAccessor file_name_tmp(env, jFileName); // throws
        file_name = StringData(file_name_tmp);
#ifdef REALM_ENABLE_ENCRYPTION
        G(nativeGroupPtr)->write(file_name, key.data());
#else
        G(nativeGroupPtr)->write(file_name);
#endif
    }
    CATCH_FILE(file_name)
    CATCH_STD()
}
#define G(x)    reinterpret_cast<realm::Group*>(x)

 

Group.java

    /**
     * Serializes the group to the specific file on the disk using encryption.
     *
     * @param file a File object representing the file.
     * @param key A 64 bytes long byte array containing the key to the encrypted Realm file. Can be null if encryption
     *            is not required.
     * @throws IOException.
     */
    public void writeToFile(File file, byte[] key) throws IOException {
        verifyGroupIsValid();
        if (file.isFile() && file.exists()) {
            throw new IllegalArgumentException("The destination file must not exist");
        }
        if (key != null && key.length != 64) {
            throw new IllegalArgumentException("Realm AES keys must be 64 bytes long");
        }

        nativeWriteToFile(nativePtr, file.getAbsolutePath(), key);
    }
    public Group() {
        this.immutable = false;
        this.context = new Context();
        this.nativePtr = createNative();
        checkNativePtrNotZero();
    }
JNIEXPORT jlong JNICALL Java_io_realm_internal_Group_createNative__(
    JNIEnv*,  jobject)
{
    TR_ENTER()
    Group *ptr = new Group();
    TR("Group::createNative(): %p.", VOID_PTR(ptr))
    return reinterpret_cast<jlong>(ptr);
}

CPP代码Group的实现在哪里?

源码中多次出现的

#include <realm/util/safe_int_ops.hpp>

在源码目录中为何找不到?

以上是关于realm java 源码疑问的主要内容,如果未能解决你的问题,请参考以下文章

Realm和RecyclerView项目排序和自动ViewPager片段通信

shiro的源码学习-- 深入理解realm

java获取随机时间的源码片段

《java精品毕设》基于javaweb宠物领养平台管理系统(源码+毕设论文+sql):主要实现:个人中心,信息修改,填写领养信息,交流论坛,新闻,寄养信息,公告,宠物领养信息,我的寄养信息等(代码片段

Realm React-Native:从 JS(反应本机代码)和 android(java)访问相同的领域

Realm 是不是与 iCloud 配合得很好?