Android-cuttlefish cvd tool
server.h
Go to the documentation of this file.
1//
2// Copyright (C) 2022 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <chrono>
19
22
23namespace cuttlefish {
24namespace socket_proxy {
25
26class Server {
27 public:
28 virtual Result<SharedFD> Start() = 0;
29 virtual std::string Describe() const = 0;
30 virtual ~Server() = default;
31};
32
33class TcpServer : public Server {
34 public:
36 int port, int retries_count = 1,
37 std::chrono::milliseconds retries_delay = std::chrono::milliseconds(0));
38 Result<SharedFD> Start() override;
39 std::string Describe() const override;
40
41 private:
42 int port_;
44 std::chrono::milliseconds retries_delay_;
45};
46
47class VsockServer : public Server {
48 public:
49 VsockServer(int port, std::optional<int> vhost_user_vsock_cid);
50 Result<SharedFD> Start() override;
51 std::string Describe() const override;
52
53 private:
54 int port_;
55 std::optional<int> vhost_user_vsock_cid_;
56};
57
58class DupServer : public Server {
59 public:
60 DupServer(int fd);
61 Result<SharedFD> Start() override;
62 std::string Describe() const override;
63
64 private:
65 int fd_;
67};
68
69} // namespace socket_proxy
70} // namespace cuttlefish
Definition: shared_fd.h:124
int fd_
Definition: server.h:65
std::string Describe() const override
Definition: server.cpp:116
SharedFD sfd_
Definition: server.h:66
Result< SharedFD > Start() override
Definition: server.cpp:111
DupServer(int fd)
Definition: server.cpp:109
Definition: server.h:26
virtual Result< SharedFD > Start()=0
virtual std::string Describe() const =0
std::string Describe() const override
Definition: server.cpp:82
std::chrono::milliseconds retries_delay_
Definition: server.h:44
int retries_count_
Definition: server.h:43
int port_
Definition: server.h:42
TcpServer(int port, int retries_count=1, std::chrono::milliseconds retries_delay=std::chrono::milliseconds(0))
Definition: server.cpp:53
Result< SharedFD > Start() override
Definition: server.cpp:59
Result< SharedFD > Start() override
Definition: server.cpp:89
int port_
Definition: server.h:54
VsockServer(int port, std::optional< int > vhost_user_vsock_cid)
Definition: server.cpp:86
std::optional< int > vhost_user_vsock_cid_
Definition: server.h:55
std::string Describe() const override
Definition: server.cpp:105
Definition: alloc_driver.h:20
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30