Пример #1
0
void* netw_fsm(void* shared_void){
	SharedVars* shared = (SharedVars*)shared_void;														
	shared->netw_membs[BROADCAST] = NetwMemb(INADDR_ANY, id_to_ip(BROADCAST), NETW_INFO_PORT, BROADCAST_ROLE); 

	shared->netw_fsm_state = FSM_FIND_NETWORK;
	while (1){
		switch (shared->netw_fsm_state){
		case FSM_FIND_NETWORK:
			//Test connection
			
			shared->master_ip = find_master(shared->netw_membs);
			if (!shared->master_ip) shared->netw_fsm_state = FSM_MASTER;
			else 					shared->netw_fsm_state = FSM_SLAVE;
			break;

		case FSM_MASTER:
			pthread_t master_threads[2];

			pthread_create(&master_threads[0], NULL, &manage_netw, shared);			//Investigate how sockets works as shared variables
			pthread_create(&master_threads[1], NULL, &manage_backup, shared);

			sleep(2);
			if (shared->netw_membs[MY_ID].role == BACKUP_ROLE){ /*Look up own role in NetwMembs*/
				follow_up_ext_orders(shared);
			}

			break;

		case FSM_SLAVE:
			shared->netw_membs[ip_to_id(shared->master_ip)] = NetwMemb(shared->master_ip, shared->master_ip, ELEV_INFO_PORT, MASTER_ROLE);
			serve(shared);
			break;
		}
	}
}
Пример #2
0
Mixer::Mixer(QWidget * parent) : QMainWindow(parent)
{
    setWindowTitle(tr("Osso - OSS 4.1 Mixer"));
    setWindowIcon(QIcon(":/icons/osso.png"));
    init();
    set_childs();
    create_controls();
    create_docks();
    create_menu();
    merge_childs();
    create_systray_actions();
    create_systray_icon();
    find_master();
    trayIcon->show();
}