// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_GRPC_SUPPORT_BIDIRECTIONAL_STREAM_H_ #define COMPONENTS_GRPC_SUPPORT_BIDIRECTIONAL_STREAM_H_ #include <memory> #include <vector> #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "net/http/bidirectional_stream.h" #include "net/third_party/quiche/src/quiche/common/http/http_header_block.h" #include "net/url_request/url_request_context_getter.h" namespace base { class Location; } // namespace base namespace net { class HttpRequestHeaders; class WrappedIOBuffer; } // namespace net namespace grpc_support { // An adapter to net::BidirectionalStream. // Created and configured from any thread. Start, ReadData, WriteData and // Destroy can be called on any thread (including network thread), and post // calls to corresponding {Start|ReadData|WriteData|Destroy}OnNetworkThread to // the network thread. The object is always deleted on network thread. All // callbacks into the Delegate are done on the network thread. // The app is expected to initiate the next step like ReadData or Destroy. // Public methods can be called on any thread. class BidirectionalStream : public net::BidirectionalStream::Delegate { … }; } // namespace grpc_support #endif // COMPONENTS_GRPC_SUPPORT_BIDIRECTIONAL_STREAM_H_