Home
last modified time | relevance | path

Searched refs:cuttlefish (Results 1 – 25 of 324) sorted by relevance

12345678910>>...13

/device/google/cuttlefish/host/commands/run_cvd/
Dlaunch.h12 std::vector <cuttlefish::SharedFD> LaunchKernelLogMonitor(
13 const cuttlefish::CuttlefishConfig& config,
14 cuttlefish::ProcessMonitor* process_monitor,
16 void LaunchAdbConnectorIfEnabled(cuttlefish::ProcessMonitor* process_monitor,
17 const cuttlefish::CuttlefishConfig& config,
18 cuttlefish::SharedFD adbd_events_pipe);
19 void LaunchSocketVsockProxyIfEnabled(cuttlefish::ProcessMonitor* process_monitor,
20 const cuttlefish::CuttlefishConfig& config);
21 void LaunchModemSimulatorIfEnabled(const cuttlefish::CuttlefishConfig& config,
22 cuttlefish::ProcessMonitor* process_monitor);
[all …]
Dlaunch.cc16 using cuttlefish::MonitorEntry;
17 using cuttlefish::RunnerExitCodes;
18 using cuttlefish::vm_manager::QemuManager;
22 std::string GetAdbConnectorTcpArg(const cuttlefish::CuttlefishConfig& config) { in GetAdbConnectorTcpArg()
27 std::string GetAdbConnectorVsockArg(const cuttlefish::CuttlefishConfig& config) { in GetAdbConnectorVsockArg()
33 bool AdbModeEnabled(const cuttlefish::CuttlefishConfig& config, cuttlefish::AdbMode mode) { in AdbModeEnabled()
37 bool AdbVsockTunnelEnabled(const cuttlefish::CuttlefishConfig& config) { in AdbVsockTunnelEnabled()
40 AdbModeEnabled(config, cuttlefish::AdbMode::VsockTunnel); in AdbVsockTunnelEnabled()
43 bool AdbVsockHalfTunnelEnabled(const cuttlefish::CuttlefishConfig& config) { in AdbVsockHalfTunnelEnabled()
46 AdbModeEnabled(config, cuttlefish::AdbMode::VsockHalfTunnel); in AdbVsockHalfTunnelEnabled()
[all …]
Dmain.cc62 using cuttlefish::ForCurrentInstance;
63 using cuttlefish::RunnerExitCodes;
64 using cuttlefish::vm_manager::VmManager;
68 cuttlefish::OnSocketReadyCb GetOnSubprocessExitCallback( in GetOnSubprocessExitCallback()
69 const cuttlefish::CuttlefishConfig& config) { in GetOnSubprocessExitCallback()
71 return cuttlefish::ProcessMonitor::RestartOnExitCb; in GetOnSubprocessExitCallback()
73 return cuttlefish::ProcessMonitor::DoNotMonitorCb; in GetOnSubprocessExitCallback()
82 CvdBootStateMachine(cuttlefish::SharedFD fg_launcher_pipe) in CvdBootStateMachine()
86 bool OnBootEvtReceived(cuttlefish::SharedFD boot_events_pipe) { in OnBootEvtReceived()
113 void SendExitCode(cuttlefish::RunnerExitCodes exit_code) { in SendExitCode()
[all …]
/device/google/cuttlefish/host/frontend/vnc_server/
Dvirtual_inputs.cpp31 using cuttlefish::vnc::VirtualInputs;
52 (*key_mapping)[cuttlefish::xk::AltLeft] = KEY_LEFTALT; in AddKeyMappings()
53 (*key_mapping)[cuttlefish::xk::ControlLeft] = KEY_LEFTCTRL; in AddKeyMappings()
54 (*key_mapping)[cuttlefish::xk::ShiftLeft] = KEY_LEFTSHIFT; in AddKeyMappings()
55 (*key_mapping)[cuttlefish::xk::AltRight] = KEY_RIGHTALT; in AddKeyMappings()
56 (*key_mapping)[cuttlefish::xk::ControlRight] = KEY_RIGHTCTRL; in AddKeyMappings()
57 (*key_mapping)[cuttlefish::xk::ShiftRight] = KEY_RIGHTSHIFT; in AddKeyMappings()
58 (*key_mapping)[cuttlefish::xk::MetaLeft] = KEY_LEFTMETA; in AddKeyMappings()
59 (*key_mapping)[cuttlefish::xk::MetaRight] = KEY_RIGHTMETA; in AddKeyMappings()
60 (*key_mapping)[cuttlefish::xk::MultiKey] = KEY_COMPOSE; in AddKeyMappings()
[all …]
/device/google/cuttlefish/host/libs/vm_manager/
Dcrosvm_manager.cpp36 namespace cuttlefish { namespace
41 std::string GetControlSocketPath(const cuttlefish::CuttlefishConfig* config) { in GetControlSocketPath()
46 cuttlefish::SharedFD AddTapFdParameter(cuttlefish::Command* crosvm_cmd, in AddTapFdParameter()
48 auto tap_fd = cuttlefish::OpenTapInterface(tap_name); in AddTapFdParameter()
58 bool ReleaseDhcpLeases(const std::string& lease_path, cuttlefish::SharedFD tap_fd) { in ReleaseDhcpLeases()
59 auto lease_file_fd = cuttlefish::SharedFD::Open(lease_path, O_RDONLY); in ReleaseDhcpLeases()
65 auto dhcp_leases = cuttlefish::ParseDnsmasqLeases(lease_file_fd); in ReleaseDhcpLeases()
67 …std::uint8_t dhcp_server_ip[] = {192, 168, 96, (std::uint8_t) (cuttlefish::ForCurrentInstance(1) *… in ReleaseDhcpLeases()
68 if (!cuttlefish::ReleaseDhcp4(tap_fd, lease.mac_address, lease.ip_address, dhcp_server_ip)) { in ReleaseDhcpLeases()
79 auto config = cuttlefish::CuttlefishConfig::Get(); in Stop()
[all …]
/device/google/cuttlefish/host/commands/launch/
Dlaunch_cvd.cc48 cuttlefish::GetInstance(),
56 std::string kAssemblerBin = cuttlefish::DefaultHostArtifactsPath("bin/assemble_cvd");
57 std::string kRunnerBin = cuttlefish::DefaultHostArtifactsPath("bin/run_cvd");
59 cuttlefish::Subprocess StartAssembler(cuttlefish::SharedFD assembler_stdin, in StartAssembler()
60 cuttlefish::SharedFD assembler_stdout, in StartAssembler()
62 cuttlefish::Command assemble_cmd(kAssemblerBin); in StartAssembler()
67 assemble_cmd.RedirectStdIO(cuttlefish::Subprocess::StdIOChannel::kStdIn, assembler_stdin); in StartAssembler()
69 assemble_cmd.RedirectStdIO(cuttlefish::Subprocess::StdIOChannel::kStdOut, assembler_stdout); in StartAssembler()
73 cuttlefish::Subprocess StartRunner(cuttlefish::SharedFD runner_stdin, in StartRunner()
75 cuttlefish::Command run_cmd(kRunnerBin); in StartRunner()
[all …]
Dfilesystem_explorer.cc31 cuttlefish::FetcherConfig AvailableFilesReport() { in AvailableFilesReport()
32 std::string current_directory = cuttlefish::AbsolutePath(cuttlefish::CurrentDirectory()); in AvailableFilesReport()
33 if (cuttlefish::FileExists(current_directory + "/fetcher_config.json")) { in AvailableFilesReport()
34 cuttlefish::FetcherConfig config; in AvailableFilesReport()
42 cuttlefish::StringFromEnv("ANDROID_HOST_OUT", in AvailableFilesReport()
43 cuttlefish::StringFromEnv("HOME", current_directory)); in AvailableFilesReport()
48 cuttlefish::FetcherConfig config; in AvailableFilesReport()
51 config.add_cvd_file(cuttlefish::CvdFile(cuttlefish::FileSource::LOCAL_FILE, "", "", file)); in AvailableFilesReport()
/device/google/cuttlefish/host/commands/modem_simulator/
Dcf_device_config.cpp22 namespace cuttlefish { namespace
26 if (!cuttlefish::CuttlefishConfig::Get()) { in host_port()
29 auto config = cuttlefish::CuttlefishConfig::Get(); in host_port()
36 if (!cuttlefish::CuttlefishConfig::Get()) { in PerInstancePath()
39 auto config = cuttlefish::CuttlefishConfig::Get(); in PerInstancePath()
45 return cuttlefish::DefaultHostArtifactsPath(file); in DefaultHostArtifactsPath()
49 if (!cuttlefish::DeviceConfig::Get()) { in ril_address_and_prefix()
52 return cuttlefish::DeviceConfig::Get()->ril_address_and_prefix(); in ril_address_and_prefix()
56 if (!cuttlefish::DeviceConfig::Get()) { in ril_gateway()
59 return cuttlefish::DeviceConfig::Get()->ril_gateway(); in ril_gateway()
[all …]
Dmain.cpp35 std::vector<cuttlefish::SharedFD> ServerFdsFromCmdline() { in ServerFdsFromCmdline()
46 std::vector<cuttlefish::SharedFD> shared_fds; in ServerFdsFromCmdline()
49 auto shared_fd = cuttlefish::SharedFD::Dup(fd); in ServerFdsFromCmdline()
62 auto config = cuttlefish::CuttlefishConfig::Get(); in main()
70 android::base::SetLogger(cuttlefish::LogToStderrAndFiles(log_files)); in main()
81 cuttlefish::NvramConfig::InitNvramConfigService(server_fds.size()); in main()
88 auto nvram_config = cuttlefish::NvramConfig::Get(); in main()
93 std::vector<std::shared_ptr<cuttlefish::ModemSimulator>> modem_simulators; in main()
99 auto modem_simulator = std::make_shared<cuttlefish::ModemSimulator>(modem_id); in main()
101 std::make_unique<cuttlefish::ChannelMonitor>(modem_simulator.get(), fd); in main()
[all …]
Dchannel_monitor.h24 namespace cuttlefish {
45 cuttlefish::SharedFD client_fd;
53 Client(cuttlefish::SharedFD fd);
54 Client(cuttlefish::SharedFD fd, ClientType client_type);
68 ChannelMonitor(ModemSimulator* modem, cuttlefish::SharedFD server);
74 void SetRemoteClient(cuttlefish::SharedFD client, bool is_accepted);
75 void SendRemoteCommand(cuttlefish::SharedFD client, std::string& response);
76 void CloseRemoteConnection(cuttlefish::SharedFD client);
84 cuttlefish::SharedFD server_;
85 cuttlefish::SharedFD read_pipe_;
[all …]
/device/google/cuttlefish/host/commands/assemble_cvd/
Ddisk_flags.cc40 using cuttlefish::AssemblerExitCodes;
41 using cuttlefish::CreateBlankImage;
42 using cuttlefish::DataImageResult;
43 using cuttlefish::InitializeMiscImage;
44 using cuttlefish::vm_manager::CrosvmManager;
46 DEFINE_string(system_image_dir, cuttlefish::DefaultGuestImagePath(""),
128 std::unique_ptr<cuttlefish::BootImageUnpacker> CreateBootImageUnpacker() { in CreateBootImageUnpacker()
129 return cuttlefish::BootImageUnpacker::FromImages( in CreateBootImageUnpacker()
134 cuttlefish::Command decomp_cmd(cuttlefish::DefaultHostArtifactsPath("bin/extract-vmlinux")); in DecompressKernel()
137 std::string bin_folder = cuttlefish::DefaultHostArtifactsPath("bin"); in DecompressKernel()
[all …]
Dflags.cc36 using cuttlefish::CreateBlankImage;
37 using cuttlefish::DataImageResult;
38 using cuttlefish::ForCurrentInstance;
39 using cuttlefish::RandomSerialNumber;
40 using cuttlefish::AssemblerExitCodes;
41 using cuttlefish::vm_manager::CrosvmManager;
42 using cuttlefish::vm_manager::QemuManager;
43 using cuttlefish::vm_manager::VmManager;
81 cuttlefish::StringFromEnv("HOME", ".") + "/cuttlefish_assembly",
84 cuttlefish::StringFromEnv("HOME", ".") + "/cuttlefish_runtime",
[all …]
Dboot_config.cc35 size_t WriteEnvironment(const cuttlefish::CuttlefishConfig& config, in WriteEnvironment()
61 bool InitBootloaderEnvPartition(const cuttlefish::CuttlefishConfig& config, in InitBootloaderEnvPartition()
70 auto mkimage_path = cuttlefish::DefaultHostArtifactsPath("bin/mkenvimage"); in InitBootloaderEnvPartition()
71 cuttlefish::Command cmd(mkimage_path); in InitBootloaderEnvPartition()
83 …if(!cuttlefish::FileExists(boot_env_image_path) || cuttlefish::ReadFile(boot_env_image_path) != cu… in InitBootloaderEnvPartition()
84 if(!cuttlefish::RenameFile(tmp_boot_env_image_path, boot_env_image_path)) { in InitBootloaderEnvPartition()
90 cuttlefish::RemoveFile(tmp_boot_env_image_path); in InitBootloaderEnvPartition()
/device/google/cuttlefish/guest/hals/hwcomposer/common/
Dstats_keeper.h29 namespace cuttlefish {
33 CompositionData(cuttlefish::time::MonotonicTimePoint time_point, int num_prepares, in CompositionData()
35 cuttlefish::time::Nanoseconds prepare_time, in CompositionData()
36 cuttlefish::time::Nanoseconds set_calls_time) in CompositionData()
44 cuttlefish::time::MonotonicTimePoint time_point() const { return time_point_; } in time_point()
52 cuttlefish::time::Nanoseconds prepare_time() const { return prepare_time_; } in prepare_time()
54 cuttlefish::time::Nanoseconds set_calls_time() const { return set_calls_time_; } in set_calls_time()
57 cuttlefish::time::MonotonicTimePoint time_point_;
61 cuttlefish::time::Nanoseconds prepare_time_;
62 cuttlefish::time::Nanoseconds set_calls_time_;
[all …]
/device/google/cuttlefish/host/commands/vtpm_passthrough/
Dvtpm_passthrough.cpp34 void HandleClient(cuttlefish::SharedFD client, cuttlefish::SharedFD device) { in HandleClient()
38 … CHECK(cuttlefish::ReadExact(client, &command_bytes) == 4) << "Could not receive TPM_SEND_COMMAND"; in HandleClient()
44 CHECK(cuttlefish::ReadExact(client, &locality) == 1) << "Could not receive locality"; in HandleClient()
46 CHECK(cuttlefish::ReadExact(client, &length_bytes) == 4) << "Could not receive command length"; in HandleClient()
48 … CHECK(cuttlefish::ReadExact(client, &command) == command.size()) << "Could not read TPM message"; in HandleClient()
54 CHECK(cuttlefish::ReadAll(device, &tpm_response) >= 0) in HandleClient()
58 CHECK(cuttlefish::WriteAll(client, length_bytes) == 4) in HandleClient()
60 CHECK(cuttlefish::WriteAll(client, tpm_response) == tpm_response.size()) in HandleClient()
63 CHECK(cuttlefish::WriteAll(client, parity) == 4) in HandleClient()
71 cuttlefish::DefaultSubprocessLogging(argv); in main()
[all …]
/device/google/cuttlefish/host/frontend/webrtc/
Dmain.cpp39 using cuttlefish::CfConnectionObserverFactory;
40 using cuttlefish::DisplayHandler;
41 using cuttlefish::webrtc_streaming::Streamer;
42 using cuttlefish::webrtc_streaming::StreamerConfig;
44 class CfOperatorObserver : public cuttlefish::webrtc_streaming::OperatorObserver {
59 cuttlefish::DefaultSubprocessLogging(argv); in main()
62 auto touch_server = cuttlefish::SharedFD::Dup(FLAGS_touch_fd); in main()
63 auto keyboard_server = cuttlefish::SharedFD::Dup(FLAGS_keyboard_fd); in main()
71 auto touch_client = cuttlefish::SharedFD::Accept(*touch_server); in main()
72 auto keyboard_client = cuttlefish::SharedFD::Accept(*keyboard_server); in main()
[all …]
Dconnection_observer.cpp33 namespace cuttlefish { namespace
76 : public cuttlefish::webrtc_streaming::ConnectionObserver {
78 ConnectionObserverImpl(cuttlefish::SharedFD touch_fd, in ConnectionObserverImpl()
79 cuttlefish::SharedFD keyboard_fd, in ConnectionObserverImpl()
108 cuttlefish::WriteAll(touch_client_, in OnTouchEvent()
125 cuttlefish::WriteAll(keyboard_client_, in OnKeyboardEvent()
132 adb_handler_.reset(new cuttlefish::webrtc_streaming::AdbHandler( in OnAdbChannelOpen()
134 cuttlefish::CuttlefishConfig::Get() in OnAdbChannelOpen()
145 cuttlefish::SharedFD touch_client_;
146 cuttlefish::SharedFD keyboard_client_;
[all …]
Dconnection_observer.h26 namespace cuttlefish {
29 : public cuttlefish::webrtc_streaming::ConnectionObserverFactory {
31 CfConnectionObserverFactory(cuttlefish::SharedFD touch_fd,
32 cuttlefish::SharedFD keyboard_fd);
35 std::shared_ptr<cuttlefish::webrtc_streaming::ConnectionObserver> CreateObserver()
41 cuttlefish::SharedFD touch_fd_;
42 cuttlefish::SharedFD keyboard_fd_;
/device/google/cuttlefish/host/libs/config/
Ddata_image.cpp12 namespace cuttlefish { namespace
24 auto fsck_path = cuttlefish::DefaultHostArtifactsPath("bin/fsck.f2fs"); in ForceFsckImage()
25 int fsck_status = cuttlefish::execute({fsck_path, "-y", "-f", data_image}); in ForceFsckImage()
35 auto file_mb = cuttlefish::FileSize(data_image) >> 20; in ResizeImage()
45 auto fd = cuttlefish::SharedFD::Open(data_image, O_RDWR); in ResizeImage()
55 auto resize_path = cuttlefish::DefaultHostArtifactsPath("bin/resize.f2fs"); in ResizeImage()
56 int resize_status = cuttlefish::execute({resize_path, data_image}); in ResizeImage()
79 auto fd = cuttlefish::SharedFD::Open(image, O_CREAT | O_TRUNC | O_RDWR, 0666); in CreateBlankImage()
88 cuttlefish::execute({"/sbin/mkfs.ext4", image}); in CreateBlankImage()
90 auto make_f2fs_path = cuttlefish::DefaultHostArtifactsPath("bin/make_f2fs"); in CreateBlankImage()
[all …]
/device/google/cuttlefish/guest/commands/vtpm_manager/
Dmain.cpp44 bool ReadResponseLoop(cuttlefish::SharedFD in_fd, cuttlefish::SharedFD out_fd) { in ReadResponseLoop()
48 CHECK(cuttlefish::ReadExactBinary(in_fd, &response_size) == 4) in ReadResponseLoop()
53 CHECK(cuttlefish::ReadExact(in_fd, &message) == response_size) in ReadResponseLoop()
60 CHECK(cuttlefish::ReadExact(in_fd, &response_bytes) == 4) in ReadResponseLoop()
62 CHECK(cuttlefish::WriteAll(out_fd, message) == message.size()) in ReadResponseLoop()
67 void SendCommand(cuttlefish::SharedFD out_fd, std::vector<char> command) { in SendCommand()
71 CHECK(cuttlefish::WriteAllBinary(out_fd, &command_num) == 4) in SendCommand()
73 CHECK(cuttlefish::WriteAllBinary(out_fd, (char*)&locality) == 1) in SendCommand()
76 CHECK(cuttlefish::WriteAllBinary(out_fd, &length) == 4) in SendCommand()
78 CHECK(cuttlefish::WriteAll(out_fd, command) == command.size()) in SendCommand()
[all …]
/device/google/cuttlefish/host/commands/tpm_simulator_manager/
Dtpm_simulator_manager.cpp46 cuttlefish::DefaultSubprocessLogging(argv); in main()
50 auto config = cuttlefish::CuttlefishConfig::Get(); in main()
54 cuttlefish::Command simulator_cmd("/usr/bin/stdbuf"); in main()
59 cuttlefish::SharedFD sim_stdout_in, sim_stdout_out; in main()
60 CHECK(cuttlefish::SharedFD::Pipe(&sim_stdout_out, &sim_stdout_in)) in main()
62 simulator_cmd.RedirectStdIO(cuttlefish::Subprocess::StdIOChannel::kStdOut, sim_stdout_in); in main()
76 cuttlefish::SharedFD client; // Hold this connection open for the process lifetime. in main()
90 client = cuttlefish::SharedFD::SocketLocalClient(FLAGS_port + 1, SOCK_STREAM); in main()
92 CHECK(cuttlefish::WriteAllBinary(client, &command) == 4) in main()
95 CHECK(cuttlefish::ReadExactBinary(client, &response) == 4) in main()
[all …]
/device/google/cuttlefish/host/commands/stop_cvd/
Dmain.cc58 std::string parent_path = cuttlefish::StringFromEnv("HOME", "."); in FallbackPaths()
76 paths.insert(instance_dir + "/" + std::string(cuttlefish::kInternalDirName) + "/*"); in FallbackPaths()
78 paths.insert(instance_dir + "/" + std::string(cuttlefish::kSharedDirName) + "/*"); in FallbackPaths()
83 std::set<std::string> PathsForInstance(const cuttlefish::CuttlefishConfig& config, in PathsForInstance()
84 … const cuttlefish::CuttlefishConfig::InstanceSpecific instance) { in PathsForInstance()
94 instance.PerInstancePath(cuttlefish::kSharedDirName), in PathsForInstance()
95 instance.PerInstancePath(cuttlefish::kSharedDirName) + "/*", in PathsForInstance()
145 bool CleanStopInstance(const cuttlefish::CuttlefishConfig::InstanceSpecific& instance) { in CleanStopInstance()
151 auto monitor_socket = cuttlefish::SharedFD::SocketLocalClient(monitor_path.c_str(), in CleanStopInstance()
158 auto request = cuttlefish::LauncherAction::kStop; in CleanStopInstance()
[all …]
/device/google/cuttlefish_vmm/x86_64-linux-gnu/
DAndroid.bp21 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
27 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
33 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
39 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
45 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
51 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
57 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
63 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
69 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
75 sub_dir: "cuttlefish/x86_64-linux-gnu/seccomp",
[all …]
/device/google/cuttlefish/host/commands/console_forwarder/
Dmain.cpp53 cuttlefish::SharedFD console_in, in ConsoleForwarder()
54 cuttlefish::SharedFD console_out, in ConsoleForwarder()
55 cuttlefish::SharedFD console_log) : in ConsoleForwarder()
69 cuttlefish::SharedFD OpenPTY() { in OpenPTY()
111 auto pty_shared_fd = cuttlefish::SharedFD::Dup(pty); in OpenPTY()
122 void EnqueueWrite(std::shared_ptr<std::vector<char>> buf_ptr, cuttlefish::SharedFD fd) { in EnqueueWrite()
132 cuttlefish::SharedFD fd; in WriteLoop()
169 cuttlefish::SharedFD client_fd; in ReadLoop()
175 cuttlefish::SharedFDSet read_set; in ReadLoop()
179 cuttlefish::Select(&read_set, nullptr, nullptr, nullptr); in ReadLoop()
[all …]
/device/google/cuttlefish/common/frontend/socket_vsock_proxy/
Dmain.cpp42 explicit SocketSender(cuttlefish::SharedFD socket) : socket_{socket} {} in SocketSender()
76 cuttlefish::SharedFD socket_;
81 explicit SocketReceiver(cuttlefish::SharedFD socket) : socket_{socket} {} in SocketReceiver()
100 cuttlefish::SharedFD socket_;
134 void HandleConnection(cuttlefish::SharedFD vsock, in HandleConnection()
135 cuttlefish::SharedFD socket) { in HandleConnection()
145 auto server = cuttlefish::SharedFD::SocketLocalServer(FLAGS_tcp_port, SOCK_STREAM); in TcpServer()
150 auto client_socket = cuttlefish::SharedFD::Accept(*server); in TcpServer()
152 cuttlefish::SharedFD vsock_socket = cuttlefish::SharedFD::VsockClient( in TcpServer()
173 cuttlefish::SharedFD OpenSocketConnection() { in OpenSocketConnection()
[all …]

12345678910>>...13