Lines Matching +full:data +full:- +full:channel
6 #include "channel.h"
13 #define GA_CHANNEL_BAUDRATE_DEFAULT B38400 /* for isa-serial channels */
25 static gboolean ga_channel_listen_accept(GIOChannel *channel, in ga_channel_listen_accept() argument
26 GIOCondition condition, gpointer data) in ga_channel_listen_accept() argument
28 GAChannel *c = data; in ga_channel_listen_accept()
32 g_assert(channel != NULL); in ga_channel_listen_accept()
34 client_fd = qemu_accept(g_io_channel_unix_get_fd(channel), NULL, NULL); in ga_channel_listen_accept()
35 if (client_fd == -1) { in ga_channel_listen_accept()
54 * indicates we should use the existing s->listen_channel
59 c->listen_channel = g_io_channel_unix_new(listen_fd); in ga_channel_listen_add()
61 g_io_add_watch(c->listen_channel, G_IO_IN, ga_channel_listen_accept, c); in ga_channel_listen_add()
66 g_assert(c->listen_channel); in ga_channel_listen_close()
67 g_io_channel_shutdown(c->listen_channel, true, NULL); in ga_channel_listen_close()
68 g_io_channel_unref(c->listen_channel); in ga_channel_listen_close()
69 c->listen_channel = NULL; in ga_channel_listen_close()
77 g_assert(c->client_channel); in ga_channel_client_close()
78 g_io_channel_shutdown(c->client_channel, true, NULL); in ga_channel_client_close()
79 g_io_channel_unref(c->client_channel); in ga_channel_client_close()
80 c->client_channel = NULL; in ga_channel_client_close()
81 if (c->listen_channel) { in ga_channel_client_close()
86 static gboolean ga_channel_client_event(GIOChannel *channel, in ga_channel_client_event() argument
87 GIOCondition condition, gpointer data) in ga_channel_client_event() argument
89 GAChannel *c = data; in ga_channel_client_event()
93 if (c->event_cb) { in ga_channel_client_event()
94 client_cont = c->event_cb(condition, c->user_data); in ga_channel_client_event()
108 g_assert(c && !c->client_channel); in ga_channel_client_add()
113 g_warning("error setting channel encoding to binary"); in ga_channel_client_add()
115 return -1; in ga_channel_client_add()
119 c->client_channel = client_channel; in ga_channel_client_add()
127 c->method = method; in ga_channel_open()
129 switch (c->method) { in ga_channel_open()
140 if (fd == -1) { in ga_channel_open()
141 error_setg_errno(errp, errno, "error opening channel '%s'", path); in ga_channel_open()
146 if (ret == -1) { in ga_channel_open()
147 error_setg_errno(errp, errno, "error setting event mask for channel"); in ga_channel_open()
154 * In the default state channel sends echo of every command to a in ga_channel_open()
160 error_setg_errno(errp, errno, "error getting channel termios attrs"); in ga_channel_open()
166 error_setg_errno(errp, errno, "error setting channel termios attrs"); in ga_channel_open()
173 error_setg(errp, "error adding channel to main loop"); in ga_channel_open()
184 if (fd == -1) { in ga_channel_open()
185 error_setg_errno(errp, errno, "error opening channel '%s'", path); in ga_channel_open()
189 /* set up serial port for non-canonical, dumb byte streaming */ in ga_channel_open()
196 /* 1 available byte min or reads will block (we'll set non-blocking in ga_channel_open()
206 error_setg(errp, "error adding channel to main loop"); in ga_channel_open()
258 g_debug("sending data, count: %d", (int)size); in ga_channel_write_all()
259 status = g_io_channel_write_chars(c->client_channel, buf, size, in ga_channel_write_all()
262 size -= written; in ga_channel_write_all()
265 g_warning("error writing to channel: %s", err->message); in ga_channel_write_all()
271 status = g_io_channel_flush(c->client_channel, &err); in ga_channel_write_all()
275 g_warning("error flushing channel: %s", err->message); in ga_channel_write_all()
283 return g_io_channel_read_chars(c->client_channel, buf, size, count, NULL); in ga_channel_read()
291 c->event_cb = cb; in ga_channel_new()
292 c->user_data = opaque; in ga_channel_new()
306 if (c->listen_channel) { in ga_channel_free()
309 if (c->client_channel) { in ga_channel_free()