libweave: Extract weave::Stream interface

Interface is implemented in buffet using ChromeOS streams.
This breaks libweave dependency on chromeos/streams/.

BUG=brillo:1257
TEST=`FEATURES=test emerge-gizmo libweave buffet`

Change-Id: I9fa73d40810f39d5608b3cbe320bc9eca0dff4ef
Reviewed-on: https://chromium-review.googlesource.com/293321
Trybot-Ready: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/shill_client.cc b/buffet/shill_client.cc
index c549fd4..0d733c8 100644
--- a/buffet/shill_client.cc
+++ b/buffet/shill_client.cc
@@ -15,6 +15,7 @@
 #include <weave/enum_to_string.h>
 
 #include "buffet/ap_manager_client.h"
+#include "buffet/socket_stream.h"
 
 using chromeos::Any;
 using chromeos::VariantDictionary;
@@ -496,4 +497,20 @@
   connecting_service_reset_pending_ = false;
 }
 
+std::unique_ptr<weave::Stream> ShillClient::OpenSocketBlocking(
+    const std::string& host,
+    uint16_t port) {
+  return SocketStream::ConnectBlocking(host, port);
+}
+
+void ShillClient::CreateTlsStream(
+    std::unique_ptr<weave::Stream> socket,
+    const std::string& host,
+    const base::Callback<void(std::unique_ptr<weave::Stream>)>&
+        success_callback,
+    const base::Callback<void(const chromeos::Error*)>& error_callback) {
+  SocketStream::TlsConnect(std::move(socket), host, success_callback,
+                           error_callback);
+}
+
 }  // namespace buffet