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 public:
17 void close();
18 ViamChannel(std::shared_ptr<GrpcChannel> channel, const char* path, void* runtime);
19
26 static std::shared_ptr<ViamChannel> dial(const char* uri,
27 const boost::optional<DialOptions>& options);
28
29 // @brief Dials to a robot at the given URI address, using the provided dial options (or default
30 // options is none are provided). Additionally specifies that this dial is an initial connection
31 // attempt and so uses the initial connection options.
36 static std::shared_ptr<ViamChannel> dial_initial(const char* uri,
37 const boost::optional<DialOptions>& options);
38
39 const std::shared_ptr<GrpcChannel>& channel() const;
40
41 private:
42 std::shared_ptr<GrpcChannel> channel_;
43 const char* path_;
44 bool closed_;
45 void* rust_runtime_;
46};
47
49 public:
51 Credentials(std::string payload);
52 Credentials(std::string type, std::string payload);
53 const std::string& type() const;
54 const std::string& payload() const;
55
56 private:
57 std::string type_;
58 std::string payload_;
59};
60
62 public:
64
65 const boost::optional<Credentials>& credentials() const;
66 const boost::optional<std::string>& entity() const;
67 bool allows_insecure_downgrade() const;
68 const std::chrono::duration<float>& timeout() const;
69 int initial_connection_attempts() const;
70 std::chrono::duration<float> initial_connection_attempt_timeout() const;
71
72 DialOptions& set_entity(boost::optional<std::string> entity);
73 DialOptions& set_credentials(boost::optional<Credentials> creds);
74 DialOptions& set_allow_insecure_downgrade(bool allow);
75 DialOptions& set_timeout(std::chrono::duration<float> timeout);
76 DialOptions& set_initial_connection_attempts(int attempts);
77 DialOptions& set_initial_connection_attempt_timeout(std::chrono::duration<float> timeout);
78
79 private:
80 // TODO (RSDK-917): We currently don't provide a flag for disabling webRTC, instead relying on a
81 // `local` uri. We should update dial logic to consider such a flag.
82
84 boost::optional<std::string> auth_entity_;
85
87 boost::optional<Credentials> credentials_;
88
91 bool allow_insecure_downgrade_ = false;
92
95 std::chrono::duration<float> timeout_{20};
96
99 int initial_connection_attempts_ = 3;
100
103 std::chrono::duration<float> initial_connection_attempt_timeout_{20};
104};
105
106class Options {
107 public:
108 Options(unsigned int refresh_interval, boost::optional<DialOptions> dial_options)
109 : refresh_interval_(std::move(refresh_interval)), dial_options_(std::move(dial_options)) {}
110
111 unsigned int refresh_interval() const;
112 const boost::optional<DialOptions>& dial_options() const;
113
114 private:
117 unsigned int refresh_interval_;
118 boost::optional<DialOptions> dial_options_;
119};
120
121} // namespace sdk
122} // namespace viam
Definition dial.hpp:48
Credentials(std::string payload)
Definition dial.hpp:61
Definition dial.hpp:106
Definition dial.hpp:15
static std::shared_ptr< 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 ...
static std::shared_ptr< ViamChannel > dial_initial(const char *uri, const boost::optional< DialOptions > &options)