Lines Matching refs:adb_host
46 AdbHost* adb_host; member
114 AdbHost* adb_host; in _adb_host_new() local
116 ANEW0(adb_host); in _adb_host_new()
117 alist_init(&adb_host->list_entry); in _adb_host_new()
118 adb_host->adb_srv = adb_srv; in _adb_host_new()
119 adb_host->host_so = -1; in _adb_host_new()
121 return adb_host; in _adb_host_new()
126 _adb_host_free(AdbHost* adb_host) in _adb_host_free() argument
128 if (adb_host != NULL) { in _adb_host_free()
130 assert(alist_is_empty(&adb_host->list_entry)); in _adb_host_free()
133 if (adb_host->host_so >= 0) { in _adb_host_free()
134 loopIo_done(adb_host->io); in _adb_host_free()
135 socket_close(adb_host->host_so); in _adb_host_free()
139 if (adb_host->pending_data != NULL) { in _adb_host_free()
140 free(adb_host->pending_data); in _adb_host_free()
142 if (adb_host->pending_send_buffer != NULL) { in _adb_host_free()
143 free(adb_host->pending_send_buffer); in _adb_host_free()
146 AFREE(adb_host); in _adb_host_free()
151 _adb_host_append_message(AdbHost* adb_host, const void* msg, int msglen) in _adb_host_append_message() argument
156 if (adb_host->pending_send_buffer == NULL) { in _adb_host_append_message()
157 adb_host->pending_send_buffer = (uint8_t*)malloc(msglen); in _adb_host_append_message()
158 adb_host->pending_send_buffer_size = msglen; in _adb_host_append_message()
159 } else if ((adb_host->pending_send_data_size + msglen) > in _adb_host_append_message()
160 adb_host->pending_send_buffer_size) { in _adb_host_append_message()
161 adb_host->pending_send_buffer = in _adb_host_append_message()
162 (uint8_t*)realloc(adb_host->pending_send_buffer, in _adb_host_append_message()
163 adb_host->pending_send_data_size + msglen); in _adb_host_append_message()
164 adb_host->pending_send_buffer_size = in _adb_host_append_message()
165 adb_host->pending_send_data_size + msglen; in _adb_host_append_message()
168 if (adb_host->pending_send_buffer == NULL) { in _adb_host_append_message()
170 adb_host->pending_send_data_size + msglen); in _adb_host_append_message()
171 adb_host->pending_send_buffer_size = adb_host->pending_send_data_size = 0; in _adb_host_append_message()
172 loopIo_dontWantWrite(adb_host->io); in _adb_host_append_message()
176 memcpy(adb_host->pending_send_buffer + adb_host->pending_send_data_size, in _adb_host_append_message()
178 loopIo_wantWrite(adb_host->io); in _adb_host_append_message()
183 _adb_connect(AdbHost* adb_host, AdbGuest* adb_guest) in _adb_connect() argument
186 adb_host, adb_host->host_so, adb_guest, adb_guest->opaque); in _adb_connect()
188 adb_guest->adb_host = adb_host; in _adb_connect()
189 adb_host->adb_guest = adb_guest; in _adb_connect()
195 _on_adb_host_disconnected(AdbHost* adb_host) in _on_adb_host_disconnected() argument
197 AdbGuest* const adb_guest = adb_host->adb_guest; in _on_adb_host_disconnected()
202 adb_host, adb_host->host_so, adb_guest, adb_guest->opaque); in _on_adb_host_disconnected()
203 adb_host->adb_guest = NULL; in _on_adb_host_disconnected()
205 adb_guest->adb_host = NULL; in _on_adb_host_disconnected()
207 D("Disconnecting ADB host %p(so=%d)", adb_host, adb_host->host_so); in _on_adb_host_disconnected()
211 alist_remove(&adb_host->list_entry); in _on_adb_host_disconnected()
212 _adb_host_free(adb_host); in _on_adb_host_disconnected()
222 _on_adb_host_read(AdbHost* adb_host) in _on_adb_host_read() argument
227 const int size = socket_recv(adb_host->host_so, buff, sizeof(buff)); in _on_adb_host_read()
230 adb_host, adb_host->host_so, strerror(errno)); in _on_adb_host_read()
233 _on_adb_host_disconnected(adb_host); in _on_adb_host_read()
236 adb_host->adb_guest ? "Transfer" : "Pend", size, adb_host, in _on_adb_host_read()
237 adb_host->host_so, QB(buff, size)); in _on_adb_host_read()
241 AdbGuest* const adb_guest = adb_host->adb_guest; in _on_adb_host_read()
247 if (adb_host->pending_data == NULL) { in _on_adb_host_read()
248 adb_host->pending_data = malloc(size); in _on_adb_host_read()
250 adb_host->pending_data = realloc(adb_host->pending_data, in _on_adb_host_read()
251 adb_host->pending_data_size + size); in _on_adb_host_read()
253 if (adb_host->pending_data != NULL) { in _on_adb_host_read()
254 memcpy(adb_host->pending_data + adb_host->pending_data_size, in _on_adb_host_read()
256 adb_host->pending_data_size += size; in _on_adb_host_read()
259 adb_host->pending_data_size + size); in _on_adb_host_read()
267 _on_adb_host_write(AdbHost* adb_host) in _on_adb_host_write() argument
269 while (adb_host->pending_send_data_size && adb_host->pending_send_buffer != NULL) { in _on_adb_host_write()
270 const int sent = socket_send(adb_host->host_so, in _on_adb_host_write()
271 adb_host->pending_send_buffer, in _on_adb_host_write()
272 adb_host->pending_send_data_size); in _on_adb_host_write()
280 free(adb_host->pending_send_buffer); in _on_adb_host_write()
281 adb_host->pending_send_buffer = NULL; in _on_adb_host_write()
282 adb_host->pending_send_buffer_size = 0; in _on_adb_host_write()
283 adb_host->pending_send_data_size = 0; in _on_adb_host_write()
288 free(adb_host->pending_send_buffer); in _on_adb_host_write()
289 adb_host->pending_send_buffer = NULL; in _on_adb_host_write()
290 adb_host->pending_send_buffer_size = 0; in _on_adb_host_write()
291 adb_host->pending_send_data_size = 0; in _on_adb_host_write()
292 _on_adb_host_disconnected(adb_host); in _on_adb_host_write()
294 } else if (sent == adb_host->pending_send_data_size) { in _on_adb_host_write()
295 free(adb_host->pending_send_buffer); in _on_adb_host_write()
296 adb_host->pending_send_buffer = NULL; in _on_adb_host_write()
297 adb_host->pending_send_buffer_size = 0; in _on_adb_host_write()
298 adb_host->pending_send_data_size = 0; in _on_adb_host_write()
300 adb_host->pending_send_data_size -= sent; in _on_adb_host_write()
301 memmove(adb_host->pending_send_buffer, in _on_adb_host_write()
302 adb_host->pending_send_buffer + sent, in _on_adb_host_write()
303 adb_host->pending_send_data_size); in _on_adb_host_write()
308 loopIo_dontWantWrite(adb_host->io); in _on_adb_host_write()
315 AdbHost* const adb_host = (AdbHost*)opaque; in _on_adb_host_io() local
316 assert(fd == adb_host->host_so); in _on_adb_host_io()
320 _on_adb_host_read(adb_host); in _on_adb_host_io()
323 _on_adb_host_write(adb_host); in _on_adb_host_io()
363 AdbHost* adb_host; in _on_server_socket_io() local
375 adb_host = _adb_host_new(adb_srv); in _on_server_socket_io()
378 adb_host->host_so = socket_accept(fd, &adb_srv->socket_address); in _on_server_socket_io()
379 if (adb_host->host_so < 0) { in _on_server_socket_io()
381 _adb_host_free(adb_host); in _on_server_socket_io()
386 loopIo_init(adb_host->io, adb_srv->looper, adb_host->host_so, in _on_server_socket_io()
387 _on_adb_host_io, adb_host); in _on_server_socket_io()
394 alist_insert_tail(&adb_srv->adb_hosts, &adb_host->list_entry); in _on_server_socket_io()
395 _adb_connect(adb_host, adb_guest); in _on_server_socket_io()
398 D("Pend ADB host %p(so=%d)", adb_host, adb_host->host_so); in _on_server_socket_io()
399 alist_insert_tail(&adb_srv->pending_hosts, &adb_host->list_entry); in _on_server_socket_io()
403 loopIo_wantRead(adb_host->io); in _on_server_socket_io()
462 AdbHost* adb_host; in adb_server_register_guest() local
470 adb_host = (AdbHost*)alist_remove_head(&_adb_server.pending_hosts); in adb_server_register_guest()
471 if (adb_host != NULL) { in adb_server_register_guest()
474 alist_insert_tail(&_adb_server.adb_hosts, &adb_host->list_entry); in adb_server_register_guest()
475 _adb_connect(adb_host, adb_guest); in adb_server_register_guest()
493 AdbHost* const adb_host = adb_guest->adb_host; in adb_server_complete_connection() local
499 if (adb_host->pending_data != NULL && adb_host->pending_data_size != 0) { in adb_server_complete_connection()
502 adb_host->pending_data_size); in adb_server_complete_connection()
504 adb_host->pending_data, in adb_server_complete_connection()
505 adb_host->pending_data_size); in adb_server_complete_connection()
506 free(adb_host->pending_data); in adb_server_complete_connection()
507 adb_host->pending_data = NULL; in adb_server_complete_connection()
508 adb_host->pending_data_size = 0; in adb_server_complete_connection()
516 AdbHost* const adb_host = adb_guest->adb_host; in adb_server_on_guest_message() local
518 if (adb_host != NULL) { in adb_server_on_guest_message()
522 if (adb_host->pending_send_buffer == NULL) { in adb_server_on_guest_message()
525 const int sent = socket_send(adb_host->host_so, msg, msglen); in adb_server_on_guest_message()
533 _on_adb_host_disconnected(adb_host); in adb_server_on_guest_message()
536 _adb_host_append_message(adb_host, msg + sent, msglen - sent); in adb_server_on_guest_message()
541 _adb_host_append_message(adb_host, msg, msglen); in adb_server_on_guest_message()
553 AdbHost* const adb_host = adb_guest->adb_host; in adb_server_on_guest_closed() local
561 if (adb_host != NULL) { in adb_server_on_guest_closed()
562 if (!alist_is_empty(&adb_host->list_entry)) { in adb_server_on_guest_closed()
563 alist_remove(&adb_host->list_entry); in adb_server_on_guest_closed()
565 _adb_host_free(adb_host); in adb_server_on_guest_closed()