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