void test_initiator() { JNXLOG(NULL,"test_linking"); session_service *service = session_service_create(linking_test_procedure, unlinking_test_procedure); session *os; session_state e = session_service_create_session(service,&os); JNXCHECK(session_service_session_is_linked(service,&os->session_guid) == 0); //Lets generate the guid of some remote session jnx_guid h; jnx_guid_create(&h); peerstore *store = peerstore_init(local_peer_for_user("initiator_bob",10,interface), 0); get_broadcast_ip(&baddr,interface); printf("%s\n", baddr); discovery_service *ds = discovery_service_create(1234, AF_INET, baddr, store); discovery_service_start(ds,BROADCAST_UPDATE_STRATEGY); int remote_peers = 0; jnx_guid **active_guids; peer *local = peerstore_get_local_peer(store); peer *remote_peer = NULL; while(!remote_peers) { int num_guids = peerstore_get_active_guids(store,&active_guids); int i; for(i=0;i<num_guids;i++) { jnx_guid *guid = active_guids[i]; peer *p = peerstore_lookup(store,guid); if(peers_compare(p,local) != 0) { printf("Found a remote peer! Breaking!\n"); remote_peers = 1; remote_peer = p; break; } } } JNXCHECK(session_is_active(os) == 0); session_service_link_sessions(service,E_AM_INITIATOR, ds,&(*os).session_guid,local,remote_peer); JNXCHECK(session_is_active(os) == 1); printf("-------------------------------------\n"); session_message_write(os,"Hello Ballface! what's going on!"); printf("-------------------------------------\n"); printf("Sessions linked - now going to unlink\n"); session_service_unlink_sessions(service,E_AM_INITIATOR, ds,&(*os).session_guid); JNXCHECK(session_is_active(os) == 0); JNXCHECK(session_service_session_is_linked(service,&os->session_guid) == 0); }
int bank_ops_open_recent(GtkWidget* parent_window, char* filename) { int val; assert(!session_is_active()); patch_destroy_all(); val = dish_file_read(filename); if (val < 0) { GtkWidget* msg = gtk_message_dialog_new(GTK_WINDOW(parent_window), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Failed to read bank %s\n.", filename); g_signal_connect_swapped(G_OBJECT(msg), "response", G_CALLBACK(gtk_widget_destroy), msg); gtk_widget_show (msg); gtk_recent_manager_remove_item(recent_manager, filename, NULL); } else { if (recent_manager) gtk_recent_manager_add_item (recent_manager, g_filename_to_uri(filename, NULL, NULL)); } return val; }
static int bus_session_append_active(DBusMessageIter *i, const char *property, void *data) { Session *s = data; dbus_bool_t b; assert(i); assert(property); assert(s); b = session_is_active(s); if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &b)) return -ENOMEM; return 0; }
static int basic_save_as(GtkWidget* parent_window, gboolean not_export) { GtkWidget *dialog; int val; const char* title; char* filter = file_ops_join_ext("*", dish_file_extension()); char* untitled_dish = file_ops_join_ext(untitled_name, dish_file_extension()); global_settings* settings = settings_get(); if (not_export) title = "Basic Save bank as"; else title = "Basic Export as"; dialog = gtk_file_chooser_dialog_new(title, GTK_WINDOW(parent_window), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE_AS, GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER(dialog), TRUE); if (!dish_file_has_state()) { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), settings->last_bank_dir); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), untitled_dish); } else { const char* tmp = 0; char* fn = 0; char* pdir = 0; /* parent of session dir */ if (dish_file_state_is_full()) { tmp = dish_file_state_parent_dir(); if (session_is_active() && (pdir = file_ops_parent_dir(tmp)) != 0) { tmp = pdir; } } else tmp = dish_file_state_bank_dir(); debug("tmp: '%s'\n", tmp); debug("parent: '%s'\n", dish_file_state_parent_dir()); debug("bank: '%s'\n", dish_file_state_bank_dir()); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), tmp); fn = file_ops_join_ext( dish_file_state_bank_name(), dish_file_extension()); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), fn); free(fn); free(pdir); } file_chooser_add_filter(dialog, "Petri-Foo files", filter); file_chooser_add_filter(dialog, "All files", "*"); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { char *name = (char *) gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); if ((val = dish_file_write_basic(name)) < 0) { GtkWidget* msg = gtk_message_dialog_new(GTK_WINDOW(dialog), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Failed to write file %s\n.", name); g_signal_connect_swapped(G_OBJECT(msg), "response", G_CALLBACK(gtk_widget_destroy), msg); gtk_widget_show (msg); } else { if (recent_manager && not_export) gtk_recent_manager_add_item (recent_manager, g_filename_to_uri(name, NULL, NULL)); } } else { val = -1; } gtk_widget_destroy(dialog); free(filter); return val; }
int bank_ops_full_save_as(GtkWidget* parent_window) { assert(!session_is_active()); return full_save_as(parent_window, TRUE); }
int bank_ops_open(GtkWidget* parent_window) { assert(!session_is_active()); return open(parent_window, TRUE); }