static Status ForwardPortWithAdb( const uint16_t local_port, const uint16_t remote_port, llvm::StringRef remote_socket_name, const llvm::Optional<AdbClient::UnixSocketNamespace> &socket_namespace, std::string &device_id) { Log *log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PLATFORM)); AdbClient adb; auto error = AdbClient::CreateByDeviceID(device_id, adb); if (error.Fail()) return error; device_id = adb.GetDeviceID(); if (log) log->Printf("Connected to Android device \"%s\"", device_id.c_str()); if (remote_port != 0) { if (log) log->Printf("Forwarding remote TCP port %d to local TCP port %d", remote_port, local_port); return adb.SetPortForwarding(local_port, remote_port); } if (log) log->Printf("Forwarding remote socket \"%s\" to local TCP port %d", remote_socket_name.str().c_str(), local_port); if (!socket_namespace) return Status("Invalid socket namespace"); return adb.SetPortForwarding(local_port, remote_socket_name, *socket_namespace); }
Error PlatformAndroid::ConnectRemote(Args& args) { m_device_id.clear(); if (IsHost()) { return Error ("can't connect to the host platform '%s', always connected", GetPluginName().GetCString()); } if (!m_remote_platform_sp) m_remote_platform_sp = PlatformSP(new PlatformAndroidRemoteGDBServer()); int port; std::string scheme, host, path; const char *url = args.GetArgumentAtIndex(0); if (!url) return Error("URL is null."); if (!UriParser::Parse(url, scheme, host, port, path)) return Error("Invalid URL: %s", url); if (scheme == "adb") m_device_id = host; auto error = PlatformLinux::ConnectRemote(args); if (error.Success()) { AdbClient adb; error = AdbClient::CreateByDeviceID(m_device_id, adb); if (error.Fail()) return error; m_device_id = adb.GetDeviceID(); } return error; }
static Error ForwardPortWithAdb (const uint16_t local_port, const uint16_t remote_port, const char* remote_socket_name, std::string& device_id) { Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_PLATFORM)); AdbClient adb; auto error = AdbClient::CreateByDeviceID(device_id, adb); if (error.Fail ()) return error; device_id = adb.GetDeviceID(); if (log) log->Printf("Connected to Android device \"%s\"", device_id.c_str ()); if (remote_port != 0) { if (log) log->Printf("Forwarding remote TCP port %d to local TCP port %d", remote_port, local_port); return adb.SetPortForwarding(local_port, remote_port); } if (log) log->Printf("Forwarding remote socket \"%s\" to local TCP port %d", remote_socket_name, local_port); return adb.SetPortForwarding(local_port, remote_socket_name); }
static Error ForwardPortWithAdb (uint16_t port, std::string& device_id) { Log *log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_PLATFORM)); AdbClient adb; auto error = AdbClient::CreateByDeviceID(device_id, adb); if (error.Fail ()) return error; device_id = adb.GetDeviceID(); if (log) log->Printf("Connected to Android device \"%s\"", device_id.c_str ()); return adb.SetPortForwarding(port); }