Exemplo n.º 1
0
//
// initialize.
//
// if first call, attach and startup.
// open server.
//
// return file error.
//
static int do_init(JNIEnv *j_env) {
    int   argc;
    char *argv[1];
    int   ferr;
    int   perr;

    perr = pthread_mutex_lock(&mutex);
    assert(perr == 0);
    if (inited)
        ferr = XZFIL_ERR_OK;
    else {
        do_reg_hash_cb(NULL); // ref to make cmplr happy
        argc = 0;
        argv[0] = NULL;
        inited = true;
        try {
            ferr = msg_init_attach(&argc, (char ***) &argv, 0, NULL);
        } catch (SB_Fatal_Excep &fatal_exc) {
            if (verbose)
                printf("cli: msg_init_attach threw exc=%s, setting PATHDOWN\n",
                       fatal_exc.what());
            ferr = XZFIL_ERR_PATHDOWN;
        } catch (...) {
            if (verbose)
                printf("cli: msg_init_attach threw unknown exc, setting PATHDOWN\n");
            ferr = XZFIL_ERR_PATHDOWN;
        }
        if (ferr == XZFIL_ERR_OK) {
            try {
                ferr = msg_mon_process_startup(false);
            } catch (SB_Fatal_Excep &fatal_exc) {
                if (verbose)
                    printf("cli: msg_mon_process_startup threw exc=%s, setting PATHDOWN\n",
                           fatal_exc.what());
                ferr = XZFIL_ERR_PATHDOWN;
            } catch (...) {
                if (verbose)
                    printf("cli: msg_mon_process_startup threw unknown exc, setting PATHDOWN\n");
                ferr = XZFIL_ERR_PATHDOWN;
            }
        }
    }
    if (ferr == XZFIL_ERR_OK) {
        if (oid < 0) {
            ferr = do_cli_open(j_env, &phandle, &oid);
            if (verbose)
                printf("cli: open-err=%d\n", ferr);
        }
    }
    perr = pthread_mutex_unlock(&mutex);
    assert(perr == 0);

    return ferr;
}
Exemplo n.º 2
0
//
// initialize
//
void do_init(int argc, char **argv) {
    int   arg;
    char *argp;
    int   ferr;

    ferr = msg_init(&argc, &argv);
    assert(ferr == XZFIL_ERR_OK);

    for (arg = 1; arg < argc; arg++) {
        argp = argv[arg];
        if (strcmp(argp, "-chook") == 0)
            chook = true;
        else if (strcmp(argp, "-cb") == 0)
            cb = true;
        else if (strcmp(argp, "-client") == 0) {
        } else if (strcmp(argp, "-id") == 0) {
            idt = true;
        } else if (strcmp(argp, "-inst") == 0) {
            arg++;
        } else if (strcmp(argp, "-loop") == 0) {
            if ((arg + 1) < argc) {
               arg++;
               argp = argv[arg];
               loop = atoi(argp);
            } else {
                printf("-loop expecting <loop>\n");
                exit(1);
            }
        } else if (strcmp(argp, "-maxcp") == 0) {
            arg++;
        } else if (strcmp(argp, "-maxsp") == 0) {
            arg++;
        } else if (strcmp(argp, "-name") == 0) {
            arg++;
        } else if (strcmp(argp, "-v") == 0) {
            verbose = true;
        } else {
            printf("unknown argument=%s\n", argp);
            exit(1);
        }
    }

    if (chook)
        msg_debug_hook("c", "c");
    if (cb)
        do_reg_hash_cb(do_cb);

    ferr = msg_mon_process_startup(false);  // system messages?
    assert(ferr == XZFIL_ERR_OK);
}
Exemplo n.º 3
0
//
// initialize.
//
// if first call, attach and startup.
// open server.
//
// return file error.
//
static int do_init(JNIEnv *pp_j_env) {
    char *la_argv[1];
    int   lv_argc;
    int   lv_ferr;
    int   lv_perr;

    if (gv_verbose)
       printf("cli: do_init start\n");
    lv_perr = pthread_mutex_lock(&gv_mutex);
    assert(lv_perr == 0);
    if (gv_inited)
        lv_ferr = XZFIL_ERR_OK;
    else {
        do_reg_hash_cb(NULL); // ref to make cmplr happy
        lv_argc = 0;
        la_argv[0] = NULL;
        gv_inited = true;
        try {
            lv_ferr = msg_init_attach(&lv_argc, (char ***) &la_argv, 0, NULL);
            if (gv_verbose)
                printf("cli: msg_init_attach ferr=%d\n", lv_ferr);
        } catch (SB_Fatal_Excep &fatal_exc) {
            if (gv_verbose)
                printf("cli: msg_init_attach threw exc=%s, setting PATHDOWN\n",
                       fatal_exc.what());
            lv_ferr = XZFIL_ERR_PATHDOWN;
        } catch (...) {
            if (gv_verbose)
                printf("cli: msg_init_attach threw unknown exc, setting PATHDOWN\n");
            lv_ferr = XZFIL_ERR_PATHDOWN;
        }
        if (lv_ferr == XZFIL_ERR_OK) {
            try {
                lv_ferr = msg_mon_process_startup4(false, true, true);
            } catch (SB_Fatal_Excep &fatal_exc) {
                if (gv_verbose)
                    printf("cli: msg_mon_process_startup threw exc=%s, setting PATHDOWN\n",
                           fatal_exc.what());
                lv_ferr = XZFIL_ERR_PATHDOWN;
            } catch (...) {
                if (gv_verbose)
                    printf("cli: msg_mon_process_startup threw unknown exc, setting PATHDOWN\n");
                lv_ferr = XZFIL_ERR_PATHDOWN;
            }
        } else if (lv_ferr == XZFIL_ERR_INVALIDSTATE) {
            // attach failed, already initialized, clear error
            lv_ferr = XZFIL_ERR_OK;
        }
    }
    if (lv_ferr == XZFIL_ERR_OK) {
        if (gv_oid < 0) {
            lv_ferr = do_cli_open(pp_j_env, &gv_phandle, &gv_oid);
            if (gv_verbose)
                printf("cli: open-err=%d\n", lv_ferr);
        }
    }
    lv_perr = pthread_mutex_unlock(&gv_mutex);
    assert(lv_perr == 0);

    if (gv_verbose)
       printf("cli: do_init end ferr=%d\n", lv_ferr);

    return lv_ferr;
}