webrtc_m130/webrtc/p2p/quic/reliablequicstream.h
Edward Lemur c20978e581 Rename webrtc/base -> webrtc/rtc_base
NOPRESUBMIT=True # cpplint errors that aren't caused by this CL.
NOTRY=True
NOTREECHECKS=True
TBR=kwiberg@webrtc.org, kjellander@webrtc.org

Bug: webrtc:7634
Change-Id: I3cca0fbaa807b563c95979cccd6d1bec32055f36
Reviewed-on: https://chromium-review.googlesource.com/562156
Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#18919}
2017-07-06 19:11:40 +00:00

57 lines
2.1 KiB
C++

/*
* Copyright 2016 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef WEBRTC_P2P_QUIC_RELIABLEQUICSTREAM_H_
#define WEBRTC_P2P_QUIC_RELIABLEQUICSTREAM_H_
#include "net/quic/reliable_quic_stream.h"
#include "webrtc/rtc_base/constructormagic.h"
#include "webrtc/rtc_base/sigslot.h"
#include "webrtc/rtc_base/stream.h"
namespace cricket {
// Streams created by QuicSession.
class ReliableQuicStream : public net::ReliableQuicStream,
public sigslot::has_slots<> {
public:
ReliableQuicStream(net::QuicStreamId id, net::QuicSession* session);
~ReliableQuicStream() override;
// ReliableQuicStream overrides.
void OnDataAvailable() override;
void OnClose() override;
void OnCanWrite() override;
// Process decrypted data into encrypted QUIC packets, which get sent to the
// QuicPacketWriter. rtc::SR_BLOCK is returned if the operation blocks instead
// of writing, in which case the data is queued until OnCanWrite() is called.
// If |fin| == true, then this stream closes after sending data.
rtc::StreamResult Write(const char* data, size_t len, bool fin = false);
// Removes this stream from the QuicSession's stream map.
void Close();
// Called when decrypted data is ready to be read.
sigslot::signal3<net::QuicStreamId, const char*, size_t> SignalDataReceived;
// Called when the stream is closed.
sigslot::signal2<net::QuicStreamId, int> SignalClosed;
// Emits the number of queued bytes that were written by OnCanWrite(), after
// the stream was previously write blocked.
sigslot::signal2<net::QuicStreamId, uint64_t> SignalQueuedBytesWritten;
private:
RTC_DISALLOW_COPY_AND_ASSIGN(ReliableQuicStream);
};
} // namespace cricket
#endif // WEBRTC_P2P_QUIC_RELIABLEQUICSTREAM_H_