⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kfsaccessjni.cc

📁 nandflash文件系统源代码
💻 CC
📖 第 1 页 / 共 2 页
字号:
    }    return jentries;}jint Java_org_kosmix_kosmosfs_access_KfsAccess_open(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath, jstring jmode, jint jnumReplicas){    KfsClient *clnt = (KfsClient *) jptr;    string path, mode;    int openMode = 0;    setStr(path, jenv, jpath);    setStr(mode, jenv, jmode);    if ((mode == "r") || (mode == "rw"))        openMode = O_RDWR;    else if (mode == "w")        openMode = O_WRONLY|O_CREAT;    else if (mode == "a")        openMode = O_WRONLY | O_APPEND;    return clnt->Open(path.c_str(), openMode, jnumReplicas);}jint Java_org_kosmix_kosmosfs_access_KfsInputChannel_close(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd){    KfsClient *clnt = (KfsClient *) jptr;        return clnt->Close(jfd);}jint Java_org_kosmix_kosmosfs_access_KfsOutputChannel_close(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd){    KfsClient *clnt = (KfsClient *) jptr;        return clnt->Close(jfd);}jint Java_org_kosmix_kosmosfs_access_KfsAccess_create(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath, jint jnumReplicas, jboolean jexclusive){    KfsClient *clnt = (KfsClient *) jptr;    string path;    setStr(path, jenv, jpath);    return clnt->Create(path.c_str(), jnumReplicas, jexclusive);}jint Java_org_kosmix_kosmosfs_access_KfsAccess_remove(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath){    KfsClient *clnt = (KfsClient *) jptr;    string path;    setStr(path, jenv, jpath);    return clnt->Remove(path.c_str());}jint Java_org_kosmix_kosmosfs_access_KfsAccess_rename(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring joldpath,     jstring jnewpath, jboolean joverwrite){    KfsClient *clnt = (KfsClient *) jptr;    string opath, npath;    setStr(opath, jenv, joldpath);    setStr(npath, jenv, jnewpath);    return clnt->Rename(opath.c_str(), npath.c_str(), joverwrite);}jint Java_org_kosmix_kosmosfs_access_KfsOutputChannel_sync(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd){    KfsClient *clnt = (KfsClient *) jptr;        return clnt->Sync(jfd);}jint Java_org_kosmix_kosmosfs_access_KfsInputChannel_seek(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd, jlong joffset){    KfsClient *clnt = (KfsClient *) jptr;        return clnt->Seek(jfd, joffset);}jint Java_org_kosmix_kosmosfs_access_KfsInputChannel_tell(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd){    KfsClient *clnt = (KfsClient *) jptr;        return clnt->Tell(jfd);}jint Java_org_kosmix_kosmosfs_access_KfsOutputChannel_seek(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd, jlong joffset){    KfsClient *clnt = (KfsClient *) jptr;        return clnt->Seek(jfd, joffset);}jint Java_org_kosmix_kosmosfs_access_KfsOutputChannel_tell(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd){    KfsClient *clnt = (KfsClient *) jptr;        return clnt->Tell(jfd);}jint Java_org_kosmix_kosmosfs_access_KfsAccess_exists(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath){    KfsClient *clnt = (KfsClient *) jptr;    string path;    setStr(path, jenv, jpath);        if (clnt->Exists(path.c_str()))        return 1;        return 0;}jint Java_org_kosmix_kosmosfs_access_KfsAccess_isFile(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath){    KfsClient *clnt = (KfsClient *) jptr;    string path;    setStr(path, jenv, jpath);        if (clnt->IsFile(path.c_str()))        return 1;    return 0;}jint Java_org_kosmix_kosmosfs_access_KfsAccess_isDirectory(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath){    KfsClient *clnt = (KfsClient *) jptr;    string path;    setStr(path, jenv, jpath);        if (clnt->IsDirectory(path.c_str()))        return 1;    return 0;}jlong Java_org_kosmix_kosmosfs_access_KfsAccess_filesize(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath){    KfsClient *clnt = (KfsClient *) jptr;    struct stat result;    string path;    setStr(path, jenv, jpath);        if (clnt->Stat(path.c_str(), result) != 0)        return -1;        return result.st_size;}jlong Java_org_kosmix_kosmosfs_access_KfsAccess_getModificationTime(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath){    KfsClient *clnt = (KfsClient *) jptr;    struct stat result;    string path;    setStr(path, jenv, jpath);        if (clnt->Stat(path.c_str(), result) != 0)        return -1;        // The expected return value is in ms    return ((jlong) result.st_mtime) * 1000;}jobjectArray Java_org_kosmix_kosmosfs_access_KfsAccess_getDataLocation(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath, jlong jstart, jlong jlen){    KfsClient *clnt = (KfsClient *) jptr;    string path;    // for each block, there could be multiple locations due to replication; return them all here    vector< vector<string> > entries;    int res;    jstring s;    jobjectArray jentries;    setStr(path, jenv, jpath);    res = clnt->GetDataLocation(path.c_str(), jstart, jlen, entries);    if ((res < 0) || (entries.size() == 0))        return NULL;    jclass jstrArrClass = jenv->FindClass("[Ljava/lang/String;");    jclass jstrClass = jenv->FindClass("Ljava/lang/String;");    // For each block, return its location(s)    jentries = jenv->NewObjectArray(entries.size(), jstrArrClass, NULL);    for (vector<string>::size_type i = 0; i < entries.size(); i++) {        jobjectArray jlocs = jenv->NewObjectArray(entries[i].size(), jstrClass, NULL);        for (vector<string>::size_type j = 0; j < entries[i].size(); j++) {            s = jenv->NewStringUTF(entries[i][j].c_str());            jenv->SetObjectArrayElement(jlocs, j, s);            jenv->DeleteLocalRef(s);        }        jenv->SetObjectArrayElement(jentries, i, jlocs);        jenv->DeleteLocalRef(jlocs);    }    return jentries;}jshort Java_org_kosmix_kosmosfs_access_KfsAccess_getReplication(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath){    KfsClient *clnt = (KfsClient *) jptr;    string path;    setStr(path, jenv, jpath);    return clnt->GetReplicationFactor(path.c_str());}jshort Java_org_kosmix_kosmosfs_access_KfsAccess_setReplication(    JNIEnv *jenv, jclass jcls, jlong jptr, jstring jpath, jint jnumReplicas){    KfsClient *clnt = (KfsClient *) jptr;    string path;    setStr(path, jenv, jpath);    return clnt->SetReplicationFactor(path.c_str(), jnumReplicas);}jint Java_org_kosmix_kosmosfs_access_KfsInputChannel_read(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd, jobject buf, jint begin, jint end) {    KfsClient *clnt = (KfsClient *) jptr;    if(!buf)        return 0;    void * addr = jenv->GetDirectBufferAddress(buf);    jlong cap = jenv->GetDirectBufferCapacity(buf);    if(!addr || cap < 0)        return 0;    if(begin < 0 || end > cap || begin > end)        return 0;    addr = (void *)(uintptr_t(addr) + begin);            ssize_t sz = clnt->Read((int) jfd, (char *) addr, (size_t) (end - begin));    return (jint)sz;}jint Java_org_kosmix_kosmosfs_access_KfsOutputChannel_write(    JNIEnv *jenv, jclass jcls, jlong jptr, jint jfd, jobject buf, jint begin, jint end) {    KfsClient *clnt = (KfsClient *) jptr;    if(!buf)        return 0;    void * addr = jenv->GetDirectBufferAddress(buf);    jlong cap = jenv->GetDirectBufferCapacity(buf);    if(!addr || cap < 0)        return 0;    if(begin < 0 || end > cap || begin > end)        return 0;    addr = (void *)(uintptr_t(addr) + begin);            ssize_t sz = clnt->Write((int) jfd, (const char *) addr, (size_t) (end - begin));    return (jint)sz;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -