blob: aef8b99bb5600cdae0048582ddb7ea3c6a7516c2 [file] [log] [blame]
Vitaly Buka493f6042015-08-12 16:17:16 -07001// Copyright 2015 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BUFFET_SOCKET_STREAM_H_
6#define BUFFET_SOCKET_STREAM_H_
7
8#include <string>
9
10#include <base/callback.h>
11#include <base/macros.h>
Alex Vakulenko41705852015-10-13 10:12:06 -070012#include <brillo/streams/stream.h>
Alex Vakulenko94f8eba2015-10-14 08:52:45 -070013#include <weave/provider/network.h>
Vitaly Buka493f6042015-08-12 16:17:16 -070014#include <weave/stream.h>
15
16namespace buffet {
17
18class SocketStream : public weave::Stream {
19 public:
Alex Vakulenko41705852015-10-13 10:12:06 -070020 explicit SocketStream(brillo::StreamPtr ptr) : ptr_{std::move(ptr)} {}
Vitaly Buka493f6042015-08-12 16:17:16 -070021
22 ~SocketStream() override = default;
23
Alex Vakulenko0fef8152015-09-25 08:45:22 -070024 void Read(void* buffer,
25 size_t size_to_read,
Alex Vakulenko94f8eba2015-10-14 08:52:45 -070026 const ReadCallback& callback) override;
Vitaly Buka493f6042015-08-12 16:17:16 -070027
Alex Vakulenko0fef8152015-09-25 08:45:22 -070028 void Write(const void* buffer,
29 size_t size_to_write,
Alex Vakulenko94f8eba2015-10-14 08:52:45 -070030 const WriteCallback& callback) override;
Vitaly Buka493f6042015-08-12 16:17:16 -070031
Alex Vakulenko0fef8152015-09-25 08:45:22 -070032 void CancelPendingOperations() override;
Vitaly Buka493f6042015-08-12 16:17:16 -070033
34 static std::unique_ptr<weave::Stream> ConnectBlocking(const std::string& host,
35 uint16_t port);
36
Alex Vakulenko94f8eba2015-10-14 08:52:45 -070037 static void TlsConnect(
38 std::unique_ptr<weave::Stream> socket,
39 const std::string& host,
40 const weave::provider::Network::OpenSslSocketCallback& callback);
Vitaly Buka493f6042015-08-12 16:17:16 -070041
42 private:
Alex Vakulenko41705852015-10-13 10:12:06 -070043 brillo::StreamPtr ptr_;
Vitaly Buka493f6042015-08-12 16:17:16 -070044 DISALLOW_COPY_AND_ASSIGN(SocketStream);
45};
46
47} // namespace buffet
48
49#endif // BUFFET_SOCKET_STREAM_H_