Beispiel #1
0
void
test_set_get(void) {
  gallus_result_t r;
  global_state_t s;
  int i;

  global_state_reset();

  for (i = (int)GLOBAL_STATE_INITIALIZING;
       i <= (int)GLOBAL_STATE_FINALIZED;
       i++) {

    r = global_state_set((global_state_t)i);
    TEST_ASSERT_EQUAL(r, GALLUS_RESULT_OK);

    r = global_state_get(&s);
    TEST_ASSERT_EQUAL(r, GALLUS_RESULT_OK);
    TEST_ASSERT_EQUAL(s, (global_state_t)i);
  }
}
Beispiel #2
0
static void
s_term_handler(int sig) {
  lagopus_result_t r = LAGOPUS_RESULT_ANY_FAILURES;
  global_state_t gs = GLOBAL_STATE_UNKNOWN;

  if ((r = global_state_get(&gs)) == LAGOPUS_RESULT_OK) {

    if ((int)gs == (int)GLOBAL_STATE_STARTED) {

      shutdown_grace_level_t l = SHUTDOWN_UNKNOWN;
      if (sig == SIGTERM || sig == SIGINT) {
        l = SHUTDOWN_GRACEFULLY;
      } else if (sig == SIGQUIT) {
        l = SHUTDOWN_RIGHT_NOW;
      }
      if (IS_VALID_SHUTDOWN(l) == true) {
        lagopus_msg_info("About to request shutdown(%s)...\n",
                         (l == SHUTDOWN_RIGHT_NOW) ?
                         "RIGHT_NOW" : "GRACEFULLY");
        if ((r = global_state_request_shutdown(l)) == LAGOPUS_RESULT_OK) {
          lagopus_msg_info("The shutdown request accepted.\n");
        } else {
          lagopus_perror(r);
          lagopus_msg_error("can't request shutdown.\n");
        }
      }

    } else if ((int)gs < (int)GLOBAL_STATE_STARTED) {
      if (sig == SIGTERM || sig == SIGINT || sig == SIGQUIT) {
        s_got_term_sig = true;
      }
    } else {
      lagopus_msg_debug(5, "The system is already shutting down.\n");
    }
  }

}