// // 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; }
// // 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); }
// // 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; }