int main (int argc, char ** argv) { int list_number; int node_number; DfaSet * dfaSet; short port; broadcast_lists[0] = star_nodes; broadcast_lists[1] = point_nodes; assert(argc == 3); list_number = atoi(argv[1]); node_number = atoi(argv[2]); assert(list_number < broadcast_lists_count); assert(node_number < broadcast_list_host_count[list_number]); port = parse_port(broadcast_lists[list_number][node_number]); dfaSet = dfa_malloc_old(DFA_MACHINE_COUNT, port, broadcast_lists, broadcast_lists_count, broadcast_list_host_count); if(list_number == 0) { long ret; dfa_reinitialize(dfaSet, broadcast_lists[list_number][node_number], transitions_star, 2, states_star, 2); spawn_main_thread(dfaSet); ret =(long) request(dfaSet, HUB_START, "bc:1", NULL_MACHINE, NULL); printf("run_request_returned: %lx\n", ret); } else { /* init_point(dfaSet, node_number); */ if(dfa_reinitialize(dfaSet, broadcast_lists[list_number][node_number], transitions_star, 2, states_star, 2) < 0) { printf("Error. Exiting.\n"); } main_loop(dfaSet); } return 0; }
int main (int argc, char ** argv) { short port; DfaSet * dfaSet; TwoPCAppState * app_state; char * localhost; assert(argc >= 2); broadcast_lists[0] = star_nodes; broadcast_lists[1] = point_nodes; app_state = malloc(sizeof(TwoPCAppState)); if (!strcmp(argv[1], "c")) { assert(argc == 2); port = parse_port(broadcast_lists[0][0]); app_state->is_coordinator = TRUE; dfaSet = dfa_malloc_old(DFA_MACHINE_COUNT, port, broadcast_lists, broadcast_lists_count, broadcast_list_host_count); localhost = broadcast_lists[0][0]; } else if (!strcmp(argv[1], "s")) { int replica; assert(argc == 3); replica = atoi(argv[2]); port = parse_port(broadcast_lists[1][replica]); app_state->is_coordinator = FALSE; dfaSet = dfa_malloc_old(DFA_MACHINE_COUNT * 10, port, broadcast_lists, broadcast_lists_count, broadcast_list_host_count); localhost = broadcast_lists[1][replica]; }else { Message * m = malloc (sizeof (Message)); NetworkSetup * ns = malloc(sizeof(NetworkSetup)); init_network_broadcast(ns, 12345, "127.0.0.1:12345", broadcast_lists, broadcast_lists_count, broadcast_list_host_count); m->to_machine_id = atoi(argv[2]); m->from_machine_id = m->to_machine_id; m->type = NULL_STATE; send_message(ns, m, "bc:0"); return 0; } if(dfa_reinitialize(dfaSet, localhost, transitions_2pc, transition_count_2pc, states_2pc, state_count_2pc) < 0) { perror("dfa_reinitialize failed"); } app_state->init_xact_2pc = NULL; app_state->veto_or_prepare_2pc = &always_prepare; app_state->abort_2pc = &assert_false; app_state->commit_2pc = &print_commit; app_state->get_broadcast_group = &bc_group_1; app_state->tally_2pc = NULL; dfaSet->app_setup = app_state; if(!strcmp(argv[1], "c")) { main_loop(dfaSet); } else if (!strcmp(argv[1], "s")) { main_loop(dfaSet); } printf("transition_count_2pc=%d\n", transition_count_2pc); printf("transitions[0].initial_state=%d\n", transitions_2pc[0].remote_state); return 0; }
int main (int argc, char** argv) { DfaSet * dfaSet = stasis_calloc(1, DfaSet); /* callback_fcn* callbacks[MAX_MESSAGE_COUNT]; */ Transition * transitions = stasis_malloc(3, Transition); State * states = stasis_malloc(MAX_STATE_COUNT, State); /* StateMachine initial_sm1_stack; */ StateMachine * initial_sm1; int transition_count; /* dfaSet->monoTree.buffer = stasis_calloc(DFA_MACHINE_COUNT, StateMachine); dfa_initialize_new (dfaSet, 10001, DFA_MACHINE_COUNT); */ /* dfaSet->monoTree.buffer = stasis_calloc(100, StateMachine); */ dfa_initialize_new (dfaSet, 10001, 100); /* initial_sm1 = allocMachine(&(dfaSet->monoTree)); */ initial_sm1 = allocSmash(dfaSet->smash); assert(NULL != initial_sm1); //(initial_sm1 = allocSmash(dfaSet->smash))); initial_sm1->message.from_machine_id = initial_sm1->machine_id; initial_sm1->message.to_machine_id = NULL_MACHINE; initial_sm1->message.type = NULL_STATE; /* What to do here ???? initial_sm1->message.machine_id = initial_sm2->machine_id; initial_sm2->message.machine_id = initial_sm1->machine_id; */ printf("sm1 %ld\n", initial_sm1->machine_id); initial_sm1->current_state = START_STATE; initial_sm1->last_transition = (time_t)0; strcpy(initial_sm1->message_recipient, "127.0.0.1:10001"); setSmash(dfaSet->smash, initial_sm1->machine_id); states[0].name = FORKED; states[0].retry_fcn = NULL; states[0].abort_fcn = NULL; transitions[0].remote_state = NULL_STATE; transitions[0].pre_state = NULL_STATE; transitions[0].post_state = START_STATE; transitions[0].fcn_ptr = &recv_new; transitions[0].force = 0; transitions[1].remote_state = START_STATE; transitions[1].pre_state = START_STATE; transitions[1].post_state = FORKED; transitions[1].fcn_ptr = &recv_ack; transitions[1].force = 0; transitions[2].remote_state = START_STATE; transitions[2].pre_state = FORKED; transitions[2].post_state = NULL_STATE; transitions[2].fcn_ptr = &recv_ack; transitions[2].force = 0; /* Needed for bootstrap... */ transitions[3].remote_state = START_STATE; transitions[3].pre_state = NULL_STATE; transitions[3].post_state = START_STATE; transitions[3].fcn_ptr = &recv_new; transitions[3].force = 0; transition_count = 4; if(dfa_reinitialize(dfaSet, "127.0.0.1:10001", transitions, transition_count, states, 1) < 0) { printf("Error. Exiting.\n"); } main_loop(dfaSet); return 0; }