// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef REMOTING_PROTOCOL_FAKE_STREAM_SOCKET_H_ #define REMOTING_PROTOCOL_FAKE_STREAM_SOCKET_H_ #include <map> #include <memory> #include <optional> #include <string> #include "base/memory/weak_ptr.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "remoting/protocol/p2p_stream_socket.h" #include "remoting/protocol/stream_channel_factory.h" namespace base { class SingleThreadTaskRunner; } namespace remoting::protocol { // FakeStreamSocket implement P2PStreamSocket interface. All data written to // FakeStreamSocket is stored in a buffer returned by written_data(). Read() // reads data from another buffer that can be set with AppendInputData(). // Pending reads are supported, so if there is a pending read AppendInputData() // calls the read callback. // // Two fake sockets can be connected to each other using the // PairWith() method, e.g.: a->PairWith(b). After this all data // written to |a| can be read from |b| and vice versa. Two connected // sockets |a| and |b| must be created and used on the same thread. class FakeStreamSocket : public P2PStreamSocket { … }; // StreamChannelFactory that creates FakeStreamSocket. class FakeStreamChannelFactory : public StreamChannelFactory { … }; } // namespace remoting::protocol #endif // REMOTING_PROTOCOL_FAKE_STREAM_SOCKET_H_