Remove error argument from ReadAsync and WriteAllAsync

User error callback to return errors.

Change-Id: Ie8114ed6d713873274c9095488d6a476389051a8
diff --git a/libweave/examples/ubuntu/network_manager.cc b/libweave/examples/ubuntu/network_manager.cc
index ab1d521..2d77309 100644
--- a/libweave/examples/ubuntu/network_manager.cc
+++ b/libweave/examples/ubuntu/network_manager.cc
@@ -49,11 +49,10 @@
     success_callback.Run();
   }
 
-  bool ReadAsync(void* buffer,
+  void ReadAsync(void* buffer,
                  size_t size_to_read,
                  const base::Callback<void(size_t)>& success_callback,
-                 const base::Callback<void(const Error*)>& error_callback,
-                 ErrorPtr* error) {
+                 const base::Callback<void(const Error*)>& error_callback) {
     int res = SSL_read(ssl_.get(), buffer, size_to_read);
     if (res > 0) {
       task_runner_->PostDelayedTask(
@@ -61,7 +60,7 @@
           base::Bind(&SSLStream::RunDelayedTask, weak_ptr_factory_.GetWeakPtr(),
                      base::Bind(success_callback, res)),
           {});
-      return true;
+      return;
     }
 
     int err = SSL_get_error(ssl_.get(), res);
@@ -69,11 +68,10 @@
     if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) {
       task_runner_->PostDelayedTask(
           FROM_HERE,
-          base::Bind(base::IgnoreResult(&SSLStream::ReadAsync),
-                     weak_ptr_factory_.GetWeakPtr(), buffer, size_to_read,
-                     success_callback, error_callback, nullptr),
+          base::Bind(&SSLStream::ReadAsync, weak_ptr_factory_.GetWeakPtr(),
+                     buffer, size_to_read, success_callback, error_callback),
           base::TimeDelta::FromSeconds(1));
-      return true;
+      return;
     }
 
     ErrorPtr weave_error;
@@ -85,14 +83,13 @@
             &SSLStream::RunDelayedTask, weak_ptr_factory_.GetWeakPtr(),
             base::Bind(error_callback, base::Owned(weave_error.release()))),
         {});
-    return true;
+    return;
   }
 
-  bool WriteAllAsync(const void* buffer,
+  void WriteAllAsync(const void* buffer,
                      size_t size_to_write,
                      const base::Closure& success_callback,
-                     const base::Callback<void(const Error*)>& error_callback,
-                     ErrorPtr* error) {
+                     const base::Callback<void(const Error*)>& error_callback) {
     int res = SSL_write(ssl_.get(), buffer, size_to_write);
     if (res > 0) {
       buffer = static_cast<const char*>(buffer) + res;
@@ -103,17 +100,16 @@
             base::Bind(&SSLStream::RunDelayedTask,
                        weak_ptr_factory_.GetWeakPtr(), success_callback),
             {});
-        return true;
+        return;
       }
 
       task_runner_->PostDelayedTask(
           FROM_HERE,
-          base::Bind(base::IgnoreResult(&SSLStream::WriteAllAsync),
-                     weak_ptr_factory_.GetWeakPtr(), buffer, size_to_write,
-                     success_callback, error_callback, nullptr),
+          base::Bind(&SSLStream::WriteAllAsync, weak_ptr_factory_.GetWeakPtr(),
+                     buffer, size_to_write, success_callback, error_callback),
           base::TimeDelta::FromSeconds(1));
 
-      return true;
+      return;
     }
 
     int err = SSL_get_error(ssl_.get(), res);
@@ -121,11 +117,10 @@
     if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) {
       task_runner_->PostDelayedTask(
           FROM_HERE,
-          base::Bind(base::IgnoreResult(&SSLStream::WriteAllAsync),
-                     weak_ptr_factory_.GetWeakPtr(), buffer, size_to_write,
-                     success_callback, error_callback, nullptr),
+          base::Bind(&SSLStream::WriteAllAsync, weak_ptr_factory_.GetWeakPtr(),
+                     buffer, size_to_write, success_callback, error_callback),
           base::TimeDelta::FromSeconds(1));
-      return true;
+      return;
     }
 
     ErrorPtr weave_error;
@@ -137,7 +132,7 @@
             &SSLStream::RunDelayedTask, weak_ptr_factory_.GetWeakPtr(),
             base::Bind(error_callback, base::Owned(weave_error.release()))),
         {});
-    return true;
+    return;
   }
 
   void CancelPendingAsyncOperations() {
diff --git a/libweave/include/weave/stream.h b/libweave/include/weave/stream.h
index 9d4e657..0fcd747 100644
--- a/libweave/include/weave/stream.h
+++ b/libweave/include/weave/stream.h
@@ -16,19 +16,17 @@
  public:
   virtual ~Stream() = default;
 
-  virtual bool ReadAsync(
+  virtual void ReadAsync(
       void* buffer,
       size_t size_to_read,
       const base::Callback<void(size_t)>& success_callback,
-      const base::Callback<void(const Error*)>& error_callback,
-      ErrorPtr* error) = 0;
+      const base::Callback<void(const Error*)>& error_callback) = 0;
 
-  virtual bool WriteAllAsync(
+  virtual void WriteAllAsync(
       const void* buffer,
       size_t size_to_write,
       const base::Closure& success_callback,
-      const base::Callback<void(const Error*)>& error_callback,
-      ErrorPtr* error) = 0;
+      const base::Callback<void(const Error*)>& error_callback) = 0;
 
   virtual void CancelPendingAsyncOperations() = 0;
 };
diff --git a/libweave/src/notification/xmpp_channel.cc b/libweave/src/notification/xmpp_channel.cc
index 04c398d..ce0c001 100644
--- a/libweave/src/notification/xmpp_channel.cc
+++ b/libweave/src/notification/xmpp_channel.cc
@@ -321,18 +321,13 @@
   }
   write_socket_data_ = queued_write_data_ + message;
   queued_write_data_.clear();
-  ErrorPtr error;
   VLOG(2) << "Sending XMPP message: " << message;
 
   write_pending_ = true;
-  bool ok = stream_->WriteAllAsync(
+  stream_->WriteAllAsync(
       write_socket_data_.data(), write_socket_data_.size(),
       base::Bind(&XmppChannel::OnMessageSent, task_ptr_factory_.GetWeakPtr()),
-      base::Bind(&XmppChannel::OnWriteError, task_ptr_factory_.GetWeakPtr()),
-      &error);
-
-  if (!ok)
-    OnWriteError(error.get());
+      base::Bind(&XmppChannel::OnWriteError, task_ptr_factory_.GetWeakPtr()));
 }
 
 void XmppChannel::OnMessageSent() {
@@ -349,16 +344,11 @@
   if (read_pending_ || !stream_)
     return;
 
-  ErrorPtr error;
   read_pending_ = true;
-  bool ok = stream_->ReadAsync(
+  stream_->ReadAsync(
       read_socket_data_.data(), read_socket_data_.size(),
       base::Bind(&XmppChannel::OnMessageRead, task_ptr_factory_.GetWeakPtr()),
-      base::Bind(&XmppChannel::OnReadError, task_ptr_factory_.GetWeakPtr()),
-      &error);
-
-  if (!ok)
-    OnReadError(error.get());
+      base::Bind(&XmppChannel::OnReadError, task_ptr_factory_.GetWeakPtr()));
 }
 
 void XmppChannel::OnReadError(const Error* error) {
diff --git a/libweave/src/notification/xmpp_channel_unittest.cc b/libweave/src/notification/xmpp_channel_unittest.cc
index aaa0f28..fb5669f 100644
--- a/libweave/src/notification/xmpp_channel_unittest.cc
+++ b/libweave/src/notification/xmpp_channel_unittest.cc
@@ -93,32 +93,31 @@
     read_data_ += data;
   }
 
-  bool ReadAsync(void* buffer,
-                 size_t size_to_read,
-                 const base::Callback<void(size_t)>& success_callback,
-                 const base::Callback<void(const Error*)>& error_callback,
-                 ErrorPtr* error) override {
+  void ReadAsync(
+      void* buffer,
+      size_t size_to_read,
+      const base::Callback<void(size_t)>& success_callback,
+      const base::Callback<void(const Error*)>& error_callback) override {
     if (read_data_.empty()) {
       task_runner_->PostDelayedTask(
-          FROM_HERE, base::Bind(base::IgnoreResult(&FakeStream::ReadAsync),
-                                base::Unretained(this), buffer, size_to_read,
-                                success_callback, error_callback, nullptr),
+          FROM_HERE,
+          base::Bind(&FakeStream::ReadAsync, base::Unretained(this), buffer,
+                     size_to_read, success_callback, error_callback),
           base::TimeDelta::FromSeconds(0));
-      return true;
+      return;
     }
     size_t size = std::min(size_to_read, read_data_.size());
     memcpy(buffer, read_data_.data(), size);
     read_data_ = read_data_.substr(size);
     task_runner_->PostDelayedTask(FROM_HERE, base::Bind(success_callback, size),
                                   base::TimeDelta::FromSeconds(0));
-    return true;
   }
 
-  bool WriteAllAsync(const void* buffer,
-                     size_t size_to_write,
-                     const base::Closure& success_callback,
-                     const base::Callback<void(const Error*)>& error_callback,
-                     ErrorPtr* error) override {
+  void WriteAllAsync(
+      const void* buffer,
+      size_t size_to_write,
+      const base::Closure& success_callback,
+      const base::Callback<void(const Error*)>& error_callback) override {
     size_t size = std::min(size_to_write, write_data_.size());
     EXPECT_EQ(
         write_data_.substr(0, size),
@@ -126,7 +125,6 @@
     write_data_ = write_data_.substr(size);
     task_runner_->PostDelayedTask(FROM_HERE, success_callback,
                                   base::TimeDelta::FromSeconds(0));
-    return true;
   }
 
  private: