weaved: Uprev libweave and fix public interfaces

libweave includes these two new commits now:
- 11956f74 Added version field to state and migrate from unversioned data
- c37cbb8b Use single callback for replies to async operations

Change-Id: I67f67c735b538c2a4dc161464ac7796c4d114ca6
diff --git a/buffet/socket_stream.cc b/buffet/socket_stream.cc
index e7588f1..f6bef88 100644
--- a/buffet/socket_stream.cc
+++ b/buffet/socket_stream.cc
@@ -11,9 +11,11 @@
 #include <unistd.h>
 
 #include <base/bind.h>
+#include <base/bind_helpers.h>
 #include <base/files/file_util.h>
 #include <base/message_loop/message_loop.h>
 #include <base/strings/stringprintf.h>
+#include <brillo/bind_lambda.h>
 #include <brillo/streams/file_stream.h>
 #include <brillo/streams/tls_stream.h>
 
@@ -22,6 +24,8 @@
 
 namespace buffet {
 
+using weave::provider::Network;
+
 namespace {
 
 std::string GetIPAddress(const sockaddr* sa) {
@@ -78,48 +82,49 @@
   return socket_fd;
 }
 
-void OnSuccess(const base::Callback<void(std::unique_ptr<weave::Stream>)>&
-                   success_callback,
+void OnSuccess(const Network::OpenSslSocketCallback& callback,
                brillo::StreamPtr tls_stream) {
-  success_callback.Run(
-      std::unique_ptr<weave::Stream>{new SocketStream{std::move(tls_stream)}});
+  callback.Run(
+      std::unique_ptr<weave::Stream>{new SocketStream{std::move(tls_stream)}},
+      nullptr);
 }
 
-void OnError(const base::Callback<void(weave::ErrorPtr)>& error_callback,
-             const brillo::Error* chromeos_error) {
+void OnError(const weave::DoneCallback& callback,
+             const brillo::Error* brillo_error) {
   weave::ErrorPtr error;
-  ConvertError(*chromeos_error, &error);
-  error_callback.Run(std::move(error));
+  ConvertError(*brillo_error, &error);
+  callback.Run(std::move(error));
 }
 
 }  // namespace
 
 void SocketStream::Read(void* buffer,
                         size_t size_to_read,
-                        const ReadSuccessCallback& success_callback,
-                        const weave::ErrorCallback& error_callback) {
-  brillo::ErrorPtr chromeos_error;
-  if (!ptr_->ReadAsync(buffer, size_to_read, success_callback,
-                       base::Bind(&OnError, error_callback), &chromeos_error)) {
+                        const ReadCallback& callback) {
+  brillo::ErrorPtr brillo_error;
+  if (!ptr_->ReadAsync(
+          buffer, size_to_read,
+          base::Bind([](const ReadCallback& callback,
+                        size_t size) { callback.Run(size, nullptr); },
+                     callback),
+          base::Bind(&OnError, base::Bind(callback, 0)), &brillo_error)) {
     weave::ErrorPtr error;
-    ConvertError(*chromeos_error, &error);
+    ConvertError(*brillo_error, &error);
     base::MessageLoop::current()->PostTask(
-        FROM_HERE, base::Bind(error_callback, base::Passed(&error)));
+        FROM_HERE, base::Bind(callback, 0, base::Passed(&error)));
   }
 }
 
 void SocketStream::Write(const void* buffer,
                          size_t size_to_write,
-                         const weave::SuccessCallback& success_callback,
-                         const weave::ErrorCallback& error_callback) {
-  brillo::ErrorPtr chromeos_error;
-  if (!ptr_->WriteAllAsync(buffer, size_to_write, success_callback,
-                           base::Bind(&OnError, error_callback),
-                           &chromeos_error)) {
+                         const WriteCallback& callback) {
+  brillo::ErrorPtr brillo_error;
+  if (!ptr_->WriteAllAsync(buffer, size_to_write, base::Bind(callback, nullptr),
+                           base::Bind(&OnError, callback), &brillo_error)) {
     weave::ErrorPtr error;
-    ConvertError(*chromeos_error, &error);
+    ConvertError(*brillo_error, &error);
     base::MessageLoop::current()->PostTask(
-        FROM_HERE, base::Bind(error_callback, base::Passed(&error)));
+        FROM_HERE, base::Bind(callback, base::Passed(&error)));
   }
 }
 
@@ -134,8 +139,7 @@
   if (socket_fd <= 0)
     return nullptr;
 
-  auto ptr_ =
-      brillo::FileStream::FromFileDescriptor(socket_fd, true, nullptr);
+  auto ptr_ = brillo::FileStream::FromFileDescriptor(socket_fd, true, nullptr);
   if (ptr_)
     return std::unique_ptr<Stream>{new SocketStream{std::move(ptr_)}};
 
@@ -143,15 +147,13 @@
   return nullptr;
 }
 
-void SocketStream::TlsConnect(
-    std::unique_ptr<Stream> socket,
-    const std::string& host,
-    const base::Callback<void(std::unique_ptr<Stream>)>& success_callback,
-    const weave::ErrorCallback& error_callback) {
+void SocketStream::TlsConnect(std::unique_ptr<Stream> socket,
+                              const std::string& host,
+                              const Network::OpenSslSocketCallback& callback) {
   SocketStream* stream = static_cast<SocketStream*>(socket.get());
-  brillo::TlsStream::Connect(std::move(stream->ptr_), host,
-                             base::Bind(&OnSuccess, success_callback),
-                             base::Bind(&OnError, error_callback));
+  brillo::TlsStream::Connect(
+      std::move(stream->ptr_), host, base::Bind(&OnSuccess, callback),
+      base::Bind(&OnError, base::Bind(callback, nullptr)));
 }
 
 }  // namespace buffet