Example #1
0
JNIEXPORT jint JNICALL Java_org_nanomsg_NanoLibrary_load_1symbols(JNIEnv* env,
                                                                  jobject obj,
                                                                  jobject map)
{
    jclass cmap = 0;
    jclass cint = 0;
    jmethodID mput = 0;
    jmethodID mnew = 0;
    jint count = 0;

    cmap = (*env)->GetObjectClass(env, map);
    NANO_ASSERT(cmap);

    mput = (*env)->GetMethodID(env, cmap,
                               "put",
                               "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    NANO_ASSERT(mput);

    cint = (*env)->FindClass(env, "java/lang/Integer");
    NANO_ASSERT(cint);

    mnew = (*env)->GetMethodID(env, cint,
                               "<init>",
                               "(I)V");
    NANO_ASSERT(mnew);

    for(count = 0; ; ++count) {
        const char* ckey;
        int cval;
        jstring jkey =  0;
        jobject jval = 0;

        ckey = nn_symbol(count, &cval);
        if (ckey == 0)
            break;
        // fprintf(stderr, "Got symbol #%d: [%s] -> %d\n", count, ckey, cval);

        jkey = (*env)->NewStringUTF(env, ckey);
        NANO_ASSERT(jkey);
        // fprintf(stderr, "Created Java String for [%s]\n", ckey);

        jval = (*env)->NewObject(env, cint, mnew, cval);
        NANO_ASSERT(jval);
        // fprintf(stderr, "Created Java Integer for [%d]\n", cval);

        (*env)->CallObjectMethod(env, map, mput, jkey, jval);
        // fprintf(stderr, "Inserted symbol in map: [%s] -> %d\n", ckey, cval);
    }

    return count;
}
Example #2
0
 inline const char *symbol (int i, int *value)
 {
     return nn_symbol (i, value);
 }
Example #3
0
JNIEXPORT jint JNICALL Java_org_nanomsg_NanoLibrary_load_1symbols(JNIEnv* env,
                                                                  jobject obj,
                                                                  jobject map)
{
    jclass cmap = 0;
    jclass cint = 0;
    jmethodID mput = 0;
    jmethodID mnew = 0;
    jint count = 0;

    cmap = (*env)->GetObjectClass(env, map);
    NANO_ASSERT(cmap);

    mput = (*env)->GetMethodID(env, cmap,
                               "put",
                               "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    NANO_ASSERT(mput);

    cint = (*env)->FindClass(env, "java/lang/Integer");
    NANO_ASSERT(cint);

    mnew = (*env)->GetMethodID(env, cint,
                               "<init>",
                               "(I)V");
    NANO_ASSERT(mnew);

    struct symbol symbols[100];
    int symi = 0;

    for (count = 0; ; ++count) {
        const char* ckey;
        int cval;

        ckey = nn_symbol(count, &cval);
        if (ckey == 0)
            break;

        symbols[symi].name = ckey;
        symbols[symi].val = cval;
        symi++;
    }

    symbols[symi].name = "NN_POLLIN";
    symbols[symi].val = NN_POLLIN;
    symi++;


    symbols[symi].name = "NN_POLLOUT";
    symbols[symi].val = NN_POLLOUT;
    symi++;


    symbols[symi].name = "EACCESS";
    symbols[symi].val = EACCESS;
    symi++;


    symbols[symi].name = "EISCONN";
    symbols[symi].val = EISCONN;
    symi++;


    symbols[symi].name = "ESOCKTNOSUPPORT";
    symbols[symi].val = ESOCKTNOSUPPORT;
    symi++;

    for (count = 0; count < symi; ++count)
    {
        const char* ckey;
        int cval;
        jstring jkey =  0;
        jobject jval = 0;

        ckey = symbols[count].name;
        cval = symbols[count].val;
        // fprintf(stderr, "Got symbol #%d: [%s] -> %d\n", count, ckey, cval);

        jkey = (*env)->NewStringUTF(env, ckey);
        NANO_ASSERT(jkey);
        // fprintf(stderr, "Created Java String for [%s]\n", ckey);

        jval = (*env)->NewObject(env, cint, mnew, cval);
        NANO_ASSERT(jval);
        // fprintf(stderr, "Created Java Integer for [%d]\n", cval);

        (*env)->CallObjectMethod(env, map, mput, jkey, jval);
        // fprintf(stderr, "Inserted symbol in map: [%s] -> %d\n", ckey, cval);
    }

    buffer_cls = (*env)->FindClass(env, "java/nio/Buffer");
    position_r_mid = (*env)->GetMethodID(env, buffer_cls, "position", "()I");
    position_w_mid = (*env)->GetMethodID(env, buffer_cls, "position", "(I)Ljava/nio/Buffer;");
    limit_r_mid    = (*env)->GetMethodID(env, buffer_cls, "limit",    "()I");

    pollfd_class = (*env)->FindClass(env, "org/nanomsg/NNPollFD");
    pollfd_fd = (*env)->GetFieldID(env, pollfd_class, "fd", "I");
    pollfd_events = (*env)->GetFieldID(env, pollfd_class, "events", "I");
    pollfd_revents = (*env)->GetFieldID(env, pollfd_class, "revents", "I");

    return count;
}