int main (int argc, char **argv) { gtk_init_check(&argc, &argv); GMainLoop *loop; loop = g_main_loop_new(NULL, TRUE); GtkListStore *store_library = gtk_list_store_new(6, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_FLOAT, G_TYPE_FLOAT, G_TYPE_FLOAT, G_TYPE_FLOAT); GSocketListener *listener; GSocketListener *listener_next_song; GSocketListener *listener_quit; gsize i; listener = g_socket_listener_new(); listener_next_song = g_socket_listener_new(); listener_quit = g_socket_listener_new(); g_socket_listener_add_inet_port(listener_next_song, 12512, NULL, NULL); g_socket_listener_add_inet_port(listener, 1292, NULL, NULL); g_socket_listener_add_inet_port(listener_quit, 11912, NULL, NULL); g_socket_listener_accept_async(listener, NULL, lllp_connected_cb, store_library); g_socket_listener_accept_async(listener_next_song, NULL, lllp_next_song_cb, store_library); g_socket_listener_accept_async(listener_quit, NULL, lllp_quit_cb, store_library); // g_timeout_add(4000, test, lllp_array); gtk_main(); return 0; }
void lllp_quit_cb(GObject *listener, GAsyncResult *res, gpointer pstore_library) { GtkListStore *store_library = GTK_LIST_STORE(pstore_library); gsize i; GtkTreeIter iter; gboolean valid; GSocketConnection *connection; GSocketAddress *remote_socket_addr; GInetAddress *remote_addr; gchar *remote_addr_char; gchar *tempchar; connection = g_socket_listener_accept_finish(G_SOCKET_LISTENER(listener), res, NULL, NULL); remote_socket_addr = g_socket_connection_get_remote_address(connection, NULL); remote_addr = g_inet_socket_address_get_address((GInetSocketAddress *)(remote_socket_addr)); remote_addr_char = g_inet_address_to_string(remote_addr); if(connection != NULL) { valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store_library), &iter); while(valid == TRUE) { gtk_tree_model_get(GTK_TREE_MODEL(store_library), &iter, INET_ADDRESS, &tempchar, -1); if(g_strcmp0(tempchar, remote_addr_char) == 0) gtk_list_store_remove(store_library, &iter); valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store_library), &iter); } printf("LLLP %s DISCONNECTED\n", remote_addr_char); } g_socket_listener_accept_async(G_SOCKET_LISTENER(listener), NULL, lllp_quit_cb, store_library); }
void lllp_connected_cb(GObject *listener, GAsyncResult *res, gpointer pstore_library) { GtkListStore *store_library = GTK_LIST_STORE(pstore_library); GSocketConnection *connection; GSocketAddress *address; gchar *address_char; GInputStream *stream; GFile *output_file; GOutputStream *file_stream; gsize count; gboolean valid = FALSE; connection = g_socket_listener_accept_finish(G_SOCKET_LISTENER(listener), res, NULL, NULL); address = g_socket_connection_get_remote_address(connection, NULL); address_char = g_inet_address_to_string(g_inet_socket_address_get_address(G_INET_SOCKET_ADDRESS(address))); printf("%s\n", address_char); output_file = g_file_new_for_path(address_char); g_file_delete(output_file, NULL, NULL); file_stream = (GOutputStream*)g_file_replace(output_file, NULL, FALSE, G_FILE_CREATE_REPLACE_DESTINATION, NULL, NULL); stream = g_io_stream_get_input_stream(G_IO_STREAM(connection)); g_output_stream_splice(file_stream, stream, G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE & G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET, NULL, NULL); g_output_stream_close(file_stream, NULL, NULL); convert_library_to_list_store(store_library, address_char); printf("%s CONNECTED\n", address_char); g_socket_listener_accept_async(G_SOCKET_LISTENER(listener), NULL, lllp_connected_cb, store_library); }
static void do_accept (GSocketService *service) { g_socket_listener_accept_async (G_SOCKET_LISTENER (service), service->priv->cancellable, g_socket_service_ready, NULL); service->priv->outstanding_accept = TRUE; }
void spice_foreign_menu_listener_accept_async (GObject *listener, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail(G_IS_OBJECT(listener)); #ifdef G_OS_WIN32 spice_named_pipe_listener_accept_async (SPICE_NAMED_PIPE_LISTENER (listener), cancellable, callback, user_data); #else g_socket_listener_accept_async (G_SOCKET_LISTENER (listener), cancellable, callback, user_data); #endif }
static void g_socket_service_changed (GSocketListener *listener) { GSocketService *service = G_SOCKET_SERVICE (listener); G_LOCK (active); if (service->priv->active) { if (service->priv->outstanding_accept) g_cancellable_cancel (service->priv->cancellable); else { g_socket_listener_accept_async (listener, service->priv->cancellable, g_socket_service_ready, NULL); service->priv->outstanding_accept = TRUE; } } G_UNLOCK (active); }
void lllp_next_song_cb(GObject *listener, GAsyncResult *res, gpointer pstore_library) { GtkListStore *store_library = GTK_LIST_STORE(pstore_library); gboolean valid = FALSE; GSocketConnection *connection; GSocketClient *player_client; GSocketAddress *address; GSocket *socket; GInputStream *stream; GOutputStream *output_stream; GInetAddress *inet_address; GInetAddress *player_with_the_song; GtkTreeIter iter; gchar *player_with_the_song_char; struct force_vector_s force_vector; gchar *remote_file; gint random_number; gsize count = 0; int i; struct force_vector_s rand_force_vector; connection = g_socket_listener_accept_finish(G_SOCKET_LISTENER(listener), res, NULL, NULL); address = g_socket_connection_get_remote_address(connection, NULL); inet_address = g_inet_socket_address_get_address(G_INET_SOCKET_ADDRESS(address)); socket = g_socket_connection_get_socket(connection); stream = g_io_stream_get_input_stream(G_IO_STREAM(connection)); g_input_stream_read_all(stream, &force_vector, sizeof(force_vector), NULL, NULL, NULL); valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store_library), &iter); while(valid == TRUE) { valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store_library), &iter); count++; } gint rand; float distance = 100, old_distance = 100; float treshold = 0.95; float treshold_distance = 4.0; do { /* TO FUNCTIONALIZE */ rand = g_random_int_range(0, count); if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store_library), &iter)) { for(i = 0; i < rand - 1; ++i) { gtk_tree_model_iter_next(GTK_TREE_MODEL(store_library), &iter); } gtk_tree_model_get(GTK_TREE_MODEL(store_library), &iter, FORCE_AMP, &rand_force_vector.amplitude, FORCE_ATK, &rand_force_vector.attack, FORCE_FREQ, &rand_force_vector.frequency, FORCE_TEMPO, &rand_force_vector.tempo, -1); } treshold -= 0.01; treshold_distance += 0.01; } while((bl_cosine_similarity(rand_force_vector, force_vector) < treshold) || ((distance = bl_distance(rand_force_vector, force_vector)) > treshold_distance)); gtk_tree_model_get(GTK_TREE_MODEL(store_library), &iter, AFILE, &remote_file, INET_ADDRESS, &player_with_the_song_char, -1); player_with_the_song = g_inet_address_new_from_string(player_with_the_song_char); if(g_inet_address_equal(player_with_the_song, inet_address) == TRUE) { rand_force_vector.attack = rand_force_vector.frequency = rand_force_vector.tempo = rand_force_vector.amplitude = 0; player_client = g_socket_client_new(); connection = g_socket_client_connect_to_host(player_client, g_inet_address_to_string(inet_address), 5353, NULL, NULL); output_stream = g_io_stream_get_output_stream(G_IO_STREAM(connection)); g_output_stream_write_all(output_stream, &rand_force_vector, sizeof(rand_force_vector), &count, NULL, NULL); g_io_stream_close(G_IO_STREAM(connection), NULL, NULL); g_socket_listener_accept_async(G_SOCKET_LISTENER(listener), NULL, lllp_next_song_cb, store_library); return; } player_client = g_socket_client_new(); connection = g_socket_client_connect_to_host(player_client, g_inet_address_to_string(inet_address), 5353, NULL, NULL); output_stream = g_io_stream_get_output_stream(G_IO_STREAM(connection)); g_output_stream_write_all(output_stream, &rand_force_vector, sizeof(rand_force_vector), &count, NULL, NULL); g_io_stream_close(G_IO_STREAM(connection), NULL, NULL); player_with_the_song_char = g_inet_address_to_string(player_with_the_song); connection = g_socket_client_connect_to_host(player_client, player_with_the_song_char, 19144, NULL, NULL); printf("%p\n", connection); output_stream = g_io_stream_get_output_stream(G_IO_STREAM(connection)); count = strlen(g_inet_address_to_string(inet_address)) + 1; g_output_stream_write_all(output_stream, &count, sizeof(gsize), NULL, NULL, NULL); g_output_stream_write_all(output_stream, g_inet_address_to_string(inet_address), count, NULL, NULL, NULL); count = strlen(remote_file) + 1; g_output_stream_write_all(output_stream, &count, sizeof(gsize), NULL, NULL, NULL); g_output_stream_write_all(output_stream, remote_file, count, NULL, NULL, NULL); g_output_stream_close(output_stream, NULL, NULL); g_socket_listener_accept_async(G_SOCKET_LISTENER(listener), NULL, lllp_next_song_cb, store_library); }
static void create_channel_cb (GObject *acr, GAsyncResult *res, gpointer user_data) { GSimpleAsyncResult *simple = user_data; CreateTubeData *data; GSocketListener *listener = NULL; gchar *dir; GSocket *socket = NULL; GSocketAddress *socket_address = NULL; GValue *address; GHashTable *parameters; GError *error = NULL; data = g_simple_async_result_get_op_res_gpointer (simple); if (g_cancellable_is_cancelled (data->op_cancellable)) { g_object_unref (simple); return; } data->channel = tp_account_channel_request_create_and_handle_channel_finish ( TP_ACCOUNT_CHANNEL_REQUEST (acr), res, NULL, &error); if (data->channel == NULL) goto OUT; data->invalidated_id = g_signal_connect (data->channel, "invalidated", G_CALLBACK (create_tube_channel_invalidated_cb), simple); /* We are client side, but we have to offer a socket... So we offer an unix * socket on which the service side can connect. We also create an IPv4 socket * on which the ssh client can connect. When both sockets are connected, * we can forward all communications between them. */ listener = g_socket_listener_new (); /* Create temporary file for our unix socket */ dir = g_build_filename (g_get_tmp_dir (), "telepathy-ssh-XXXXXX", NULL); dir = mkdtemp (dir); data->unix_path = g_build_filename (dir, "unix-socket", NULL); g_free (dir); /* Create the unix socket, and listen for connection on it */ socket = g_socket_new (G_SOCKET_FAMILY_UNIX, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, &error); if (socket == NULL) goto OUT; socket_address = g_unix_socket_address_new (data->unix_path); if (!g_socket_bind (socket, socket_address, FALSE, &error)) goto OUT; if (!g_socket_listen (socket, &error)) goto OUT; if (!g_socket_listener_add_socket (listener, socket, NULL, &error)) goto OUT; g_socket_listener_accept_async (listener, data->op_cancellable, create_tube_socket_connected_cb, g_object_ref (simple)); /* Offer the socket */ address = tp_address_variant_from_g_socket_address (socket_address, TP_SOCKET_ADDRESS_TYPE_UNIX, &error); if (address == NULL) goto OUT; parameters = g_hash_table_new (NULL, NULL); data->offer_call = tp_cli_channel_type_stream_tube_call_offer (data->channel, -1, TP_SOCKET_ADDRESS_TYPE_UNIX, address, TP_SOCKET_ACCESS_CONTROL_LOCALHOST, parameters, create_tube_offer_cb, g_object_ref (simple), g_object_unref, NULL); tp_g_value_slice_free (address); g_hash_table_unref (parameters); OUT: if (error != NULL) create_tube_complete (simple, error); tp_clear_object (&listener); tp_clear_object (&socket); tp_clear_object (&socket_address); g_clear_error (&error); g_object_unref (simple); }