Viam C++ SDK current
Loading...
Searching...
No Matches
dial.hpp
1#pragma once
2
3#include <chrono>
4#include <memory>
5#include <string>
6
7#include <boost/optional.hpp>
8
9#include <viam/sdk/common/grpc_fwd.hpp>
10
11namespace viam {
12namespace sdk {
13
14class DialOptions;
16 ViamChannel(std::shared_ptr<GrpcChannel> channel, const char* path, void* runtime);
17
18 public:
19 explicit ViamChannel(std::shared_ptr<GrpcChannel> channel);
20
21 ViamChannel(ViamChannel&&) noexcept;
22
23 ViamChannel& operator=(ViamChannel&&) noexcept;
24
26
33 static ViamChannel dial(const char* uri, const boost::optional<DialOptions>& options);
34
35 // @brief Dials to a robot at the given URI address, using the provided dial options (or default
36 // options is none are provided). Additionally specifies that this dial is an initial connection
37 // attempt and so uses the initial connection options.
42 static ViamChannel dial_initial(const char* uri, const boost::optional<DialOptions>& options);
43
44 const std::shared_ptr<GrpcChannel>& channel() const;
45
46 void close();
47
48 private:
49 struct impl;
50
51 std::shared_ptr<GrpcChannel> channel_;
52
53 std::unique_ptr<impl> pimpl_;
54};
55
57 public:
59 Credentials(std::string payload);
60 Credentials(std::string type, std::string payload);
61 const std::string& type() const;
62 const std::string& payload() const;
63
64 private:
65 std::string type_;
66 std::string payload_;
67};
68
70 public:
72
73 const boost::optional<Credentials>& credentials() const;
74 const boost::optional<std::string>& entity() const;
75 bool allows_insecure_downgrade() const;
76 const std::chrono::duration<float>& timeout() const;
77 int initial_connection_attempts() const;
78 std::chrono::duration<float> initial_connection_attempt_timeout() const;
79
80 DialOptions& set_entity(boost::optional<std::string> entity);
81 DialOptions& set_credentials(boost::optional<Credentials> creds);
82 DialOptions& set_allow_insecure_downgrade(bool allow);
83 DialOptions& set_timeout(std::chrono::duration<float> timeout);
84 DialOptions& set_initial_connection_attempts(int attempts);
85 DialOptions& set_initial_connection_attempt_timeout(std::chrono::duration<float> timeout);
86
87 private:
88 // TODO (RSDK-917): We currently don't provide a flag for disabling webRTC, instead relying on a
89 // `local` uri. We should update dial logic to consider such a flag.
90
92 boost::optional<std::string> auth_entity_;
93
95 boost::optional<Credentials> credentials_;
96
99 bool allow_insecure_downgrade_ = false;
100
103 std::chrono::duration<float> timeout_{20};
104
107 int initial_connection_attempts_ = 3;
108
111 std::chrono::duration<float> initial_connection_attempt_timeout_{20};
112};
113
114class Options {
115 public:
116 Options(unsigned int refresh_interval, boost::optional<DialOptions> dial_options)
117 : refresh_interval_(std::move(refresh_interval)), dial_options_(std::move(dial_options)) {}
118
119 unsigned int refresh_interval() const;
120 const boost::optional<DialOptions>& dial_options() const;
121
122 private:
125 unsigned int refresh_interval_;
126 boost::optional<DialOptions> dial_options_;
127};
128
129} // namespace sdk
130} // namespace viam
Definition dial.hpp:56
Credentials(std::string payload)
Definition dial.hpp:69
Definition dial.hpp:114
Definition dial.hpp:15
static ViamChannel dial_initial(const char *uri, const boost::optional< DialOptions > &options)
static ViamChannel dial(const char *uri, const boost::optional< DialOptions > &options)
Connects to a robot at the given URI address, using the provided dial options (or default options is ...