summaryrefslogtreecommitdiff
path: root/modules/io-tls/c++/tls.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/io-tls/c++/tls.hpp')
-rw-r--r--modules/io-tls/c++/tls.hpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/modules/io-tls/c++/tls.hpp b/modules/io-tls/c++/tls.hpp
index c5c3da1..5082ee9 100644
--- a/modules/io-tls/c++/tls.hpp
+++ b/modules/io-tls/c++/tls.hpp
@@ -43,6 +43,20 @@ private:
};
template<typename T>
+class network_address<net::Tls<T>> final {
+private:
+ own<network_address<T>> internal_;
+public:
+ network_address(own<network_address<T>> internal__):
+ internal_{std::move(internal__)}
+ {}
+
+ network_address<T>& get_handle() {
+ return *internal_;
+ }
+};
+
+template<typename T>
class network<net::Tls<T>> {
public:
virtual ~network() = default;
@@ -63,15 +77,17 @@ public:
/**
* Set up a listener on this address
*/
- virtual error_or<own<server<T>>> listen(network_address<T> &bind_addr) = 0;
+ virtual error_or<own<server<net::Tls<T>>>> listen(network_address<net::Tls<T>> &bind_addr) = 0;
/**
* Connect to a remote address
*/
- virtual conveyor<own<io_stream<T>>> connect(network_address<T> &address) = 0;
+ virtual conveyor<own<io_stream<net::Tls<T>>>> connect(network_address<net::Tls<T>> &address) = 0;
};
template<typename T = net::Os>
error_or<own<network<net::Tls<T>>>> setup_tls_network(network<T> &network);
} // namespace saw
+
+#include "tls.tmpl.hpp"