asocket* host_service_to_socket(const char* name, const char *serial) { if (!strcmp(name,"track-devices")) { return create_device_tracker(); } else if (!strncmp(name, "wait-for-", strlen("wait-for-"))) { struct state_info* sinfo = malloc(sizeof(struct state_info)); if (serial) sinfo->serial = strdup(serial); else sinfo->serial = NULL; name += strlen("wait-for-"); if (!strncmp(name, "local", strlen("local"))) { sinfo->transport = kTransportLocal; sinfo->state = CS_DEVICE; } else if (!strncmp(name, "usb", strlen("usb"))) { sinfo->transport = kTransportUsb; sinfo->state = CS_DEVICE; } else if (!strncmp(name, "any", strlen("any"))) { sinfo->transport = kTransportAny; sinfo->state = CS_DEVICE; } else { free(sinfo); return NULL; } int fd = create_service_thread(wait_for_state, sinfo); return create_local_socket(fd); } return NULL; }
asocket* host_service_to_socket(const char* name, const char* serial) { if (!strcmp(name,"track-devices")) { return create_device_tracker(); } else if (android::base::StartsWith(name, "wait-for-")) { name += strlen("wait-for-"); std::unique_ptr<state_info> sinfo(new state_info); if (sinfo == nullptr) { fprintf(stderr, "couldn't allocate state_info: %s", strerror(errno)); return nullptr; } if (serial) sinfo->serial = serial; if (android::base::StartsWith(name, "local")) { name += strlen("local"); sinfo->transport_type = kTransportLocal; } else if (android::base::StartsWith(name, "usb")) { name += strlen("usb"); sinfo->transport_type = kTransportUsb; } else if (android::base::StartsWith(name, "any")) { name += strlen("any"); sinfo->transport_type = kTransportAny; } else { return nullptr; } if (!strcmp(name, "-device")) { sinfo->state = kCsDevice; } else if (!strcmp(name, "-recovery")) { sinfo->state = kCsRecovery; } else if (!strcmp(name, "-sideload")) { sinfo->state = kCsSideload; } else if (!strcmp(name, "-bootloader")) { sinfo->state = kCsBootloader; } else { return nullptr; } int fd = create_service_thread(wait_for_state, sinfo.release()); return create_local_socket(fd); } else if (!strncmp(name, "connect:", 8)) { char* host = strdup(name + 8); int fd = create_service_thread(connect_service, host); return create_local_socket(fd); } return NULL; }
asocket* host_service_to_socket(const char* name, const char *serial) { if (!strcmp(name,"track-devices")) { return create_device_tracker(); } else if (!strncmp(name, "wait-for-", strlen("wait-for-"))) { struct state_info* sinfo = malloc(sizeof(struct state_info)); if (serial) sinfo->serial = strdup(serial); else sinfo->serial = NULL; name += strlen("wait-for-"); if (!strncmp(name, "local", strlen("local"))) { sinfo->transport = kTransportLocal; sinfo->state = CS_DEVICE; } else if (!strncmp(name, "usb", strlen("usb"))) { sinfo->transport = kTransportUsb; sinfo->state = CS_DEVICE; } else if (!strncmp(name, "any", strlen("any"))) { sinfo->transport = kTransportAny; sinfo->state = CS_DEVICE; } else if (!strncmp(name, "sideload", strlen("sideload"))) { sinfo->transport = kTransportAny; sinfo->state = CS_SIDELOAD; } else if (!strncmp(name, "recovery", strlen("recovery"))) { sinfo->transport = kTransportAny; sinfo->state = CS_RECOVERY; } else if (!strncmp(name, "online", strlen("online"))) { sinfo->transport = kTransportAny; sinfo->state = CS_ONLINE; } else { free(sinfo); return NULL; } int fd = create_service_thread(wait_for_state, sinfo); return create_local_socket(fd); } else if (!strncmp(name, "connect:", 8)) { const char *host = name + 8; int fd = create_service_thread(connect_service, (void *)host); return create_local_socket(fd); } return NULL; }
asocket* host_service_to_socket(const char* name, const char *serial) { if (!strcmp(name,"track-devices")) { return create_device_tracker(); } else if (!strncmp(name, "wait-for-", strlen("wait-for-"))) { auto sinfo = reinterpret_cast<state_info*>(malloc(sizeof(state_info))); if (sinfo == nullptr) { fprintf(stderr, "couldn't allocate state_info: %s", strerror(errno)); return NULL; } if (serial) sinfo->serial = strdup(serial); else sinfo->serial = NULL; name += strlen("wait-for-"); if (!strncmp(name, "local", strlen("local"))) { sinfo->transport_type = kTransportLocal; sinfo->state = kCsDevice; } else if (!strncmp(name, "usb", strlen("usb"))) { sinfo->transport_type = kTransportUsb; sinfo->state = kCsDevice; } else if (!strncmp(name, "any", strlen("any"))) { sinfo->transport_type = kTransportAny; sinfo->state = kCsDevice; } else { if (sinfo->serial) { free(sinfo->serial); } free(sinfo); return NULL; } int fd = create_service_thread(wait_for_state, sinfo); return create_local_socket(fd); } else if (!strncmp(name, "connect:", 8)) { char* host = strdup(name + 8); int fd = create_service_thread(connect_service, host); return create_local_socket(fd); } return NULL; }