static void readable(PseudoTcpSocket *s, gpointer user_data) { PseudoTcpChannel *tcp = (PseudoTcpChannel *) user_data; int len; static char buf[4*1024]; len = pseudo_tcp_socket_recv(tcp->pseudo_tcp, buf, sizeof(buf)); if(len > 0) { send(tcp->reliable_sockets[0], buf, len, 0); signal_emit(tcp->on_data_received, tcp, buf, len); } }
static void readable (PseudoTcpSocket *sock, gpointer data) { gchar buf[1024]; gint len; g_debug ("Socket %p Readable", sock); do { len = pseudo_tcp_socket_recv (sock, buf, sizeof(buf)); if (len > 0) { g_debug ("Read %d bytes", len); if (out) { if (fwrite (buf, len, 1, out) == 0) g_debug ("Error writing to output file"); else { total_wrote += len; g_assert (total_wrote <= total_read); g_debug ("Written %d bytes, need %d bytes", total_wrote, total_read); if (total_wrote == total_read && feof (in)) { g_assert (reading_done); pseudo_tcp_socket_close (sock, FALSE); } } } else { if (len == 26 && strncmp (buf, "abcdefghijklmnopqrstuvwxyz", len) == 0) { pseudo_tcp_socket_close (sock, FALSE); } else { g_debug ("Error reading data.. read %d bytes : %s", len, buf); exit (-1); } } } else if (len == 0) { pseudo_tcp_socket_close (sock, FALSE); } } while (len > 0); if (len == -1 && pseudo_tcp_socket_get_error (sock) != EWOULDBLOCK) { g_debug ("Error reading from socket %p: %s", sock, g_strerror (pseudo_tcp_socket_get_error (sock))); exit (-1); } }
static void readable (PseudoTcpSocket *sock, gpointer data) { gchar buf[1024]; gint len; g_debug ("Socket %p Readable", sock); do { len = pseudo_tcp_socket_recv (sock, buf, sizeof(buf)); if (len > 0) { g_debug ("Read %d bytes", len); if (out) { if (fwrite (buf, len, 1, out) == 0) g_debug ("Error writing to output file"); else { total_wrote += len; g_assert (total_wrote <= total_read); g_debug ("Written %d bytes, need %d bytes", total_wrote, total_read); if (total_wrote == total_read && feof (in)) { g_assert (reading_done); pseudo_tcp_socket_close (sock, FALSE); } } } else { pseudo_tcp_socket_close (sock, FALSE); } } else if (len == 0) { pseudo_tcp_socket_close (sock, FALSE); } } while (len > 0); if (len == -1 && pseudo_tcp_socket_get_error (sock) != EWOULDBLOCK) { g_printerr ("Error reading from socket %p: %s.\n", sock, g_strerror (pseudo_tcp_socket_get_error (sock))); retval = -1; g_main_loop_quit (main_loop); return; } }