Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(409)

Unified Diff: net/quic/quartc/quartc_stream_interface.h

Issue 2324833004: Define Stable API for WebRTC/Quartc (Closed)
Patch Set: Fix the memory leak. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/quic/quartc/quartc_stream_interface.h
diff --git a/net/quic/quartc/quartc_stream_interface.h b/net/quic/quartc/quartc_stream_interface.h
new file mode 100644
index 0000000000000000000000000000000000000000..23b133840f7067a247b7273370d1e774015149c1
--- /dev/null
+++ b/net/quic/quartc/quartc_stream_interface.h
@@ -0,0 +1,72 @@
+// Copyright (c) 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_QUIC_QUARTC_QUARTC_STREAM_INTERFACE_H_
+#define NET_QUIC_QUARTC_QUARTC_STREAM_INTERFACE_H_
skvlad-chromium 2016/10/28 21:51:42 Please add includes for system types: #include <st
+
+namespace net {
+
+// Sends and receives data with a particular QUIC stream ID, reliably and
+// in-order. To send/receive data out of order, use separate streams. To
+// send/receive unreliably, close a stream after reliability is no longer
+// needed.
+class NET_EXPORT_PRIVATE QuartcStreamInterface {
+ public:
+ virtual ~QuartcStreamInterface() {}
+
+ // The QUIC stream ID.
+ virtual uint32_t stream_id() = 0;
+
+ // The amount of data buffered by the QuicConnection.
+ virtual uint64_t buffered_amount() = 0;
+
+ // Return true if the FIN has been sent. Used by the outgoing streams to
+ // determine if all the data has been sent
+ virtual bool fin_sent() = 0;
+
+ struct WriteParameters {
+ // |fin| is set to be true when there is no more data need to be send
+ // through a particular stream. The receiving side will used it to determine
+ // if the sender finish sending data.
+ bool fin = false;
+ };
+
+ // Sends data reliably and in-order, buffering if necessary until Close() is
+ // called.
+ virtual void Write(const char* data,
+ size_t size,
+ const WriteParameters& param) = 0;
+
+ // Once Close is called, no more data can be sent, all buffered data will be
+ // dropped and no data will be retransmitted.
+ virtual void Close() = 0;
+
+ // Implemented by the user of the QuartcStreamInterface to receive incoming
+ // data and be notified of state changes.
+ class Delegate {
+ public:
+ virtual ~Delegate() {}
+
+ // Called when the stream receives the date.
+ virtual void OnReceived(QuartcStreamInterface* stream,
+ const char* data,
+ size_t size) = 0;
+
+ // Called when the stream is closed, either locally or by the remote
+ // endpoint.
+ // TODO(zhihuang) Creates a map from the integer error_code to WebRTC native
+ // error code.
+ virtual void OnClose(QuartcStreamInterface* stream, int error_code) = 0;
+
+ // Called when buffered_amount() decreases.
+ virtual void OnBufferedAmountDecrease(QuartcStreamInterface* stream) = 0;
+ };
+
+ // The |delegate| is not owned by QuartcStream.
+ virtual void SetDelegate(Delegate* delegate) = 0;
+};
+
+} // namespace net
+
+#endif // NET_QUIC_QUARTC_QUARTC_STREAM_INTERFACE_H_

Powered by Google App Engine
This is Rietveld 408576698