| Index: net/quic/reliable_quic_stream.cc
|
| diff --git a/net/quic/reliable_quic_stream.cc b/net/quic/reliable_quic_stream.cc
|
| index bc472f0bca8f7dde0ae6eb2c55652340e897cc42..386ac7b805e278fd4673676c3f6e640bf8ac2fda 100644
|
| --- a/net/quic/reliable_quic_stream.cc
|
| +++ b/net/quic/reliable_quic_stream.cc
|
| @@ -41,6 +41,12 @@ uint32 StripUint32(const char* data, uint32 data_len,
|
| return missing_size;
|
| }
|
|
|
| +struct iovec MakeIovec(StringPiece data) {
|
| + struct iovec iov = {const_cast<char*>(data.data()),
|
| + static_cast<size_t>(data.size())};
|
| + return iov;
|
| +}
|
| +
|
| } // namespace
|
|
|
| ReliableQuicStream::ReliableQuicStream(QuicStreamId id,
|
| @@ -192,25 +198,21 @@ bool ReliableQuicStream::GetSSLInfo(SSLInfo* ssl_info) {
|
| return session_->GetSSLInfo(ssl_info);
|
| }
|
|
|
| -QuicConsumedData ReliableQuicStream::WriteData(StringPiece data, bool fin) {
|
| - DCHECK(data.size() > 0 || fin);
|
| - return WriteOrBuffer(data, fin);
|
| -}
|
| -
|
| -
|
| void ReliableQuicStream::set_priority(QuicPriority priority) {
|
| DCHECK_EQ(0u, stream_bytes_written_);
|
| priority_ = priority;
|
| }
|
|
|
| -QuicConsumedData ReliableQuicStream::WriteOrBuffer(StringPiece data, bool fin) {
|
| +void ReliableQuicStream::WriteOrBufferData(StringPiece data, bool fin) {
|
| + DCHECK(data.size() > 0 || fin);
|
| DCHECK(!fin_buffered_);
|
|
|
| QuicConsumedData consumed_data(0, false);
|
| fin_buffered_ = fin;
|
|
|
| if (queued_data_.empty()) {
|
| - consumed_data = WriteDataInternal(string(data.data(), data.length()), fin);
|
| + struct iovec iov(MakeIovec(data));
|
| + consumed_data = WritevData(&iov, 1, fin, NULL);
|
| DCHECK_LE(consumed_data.bytes_consumed, data.length());
|
| }
|
|
|
| @@ -221,8 +223,6 @@ QuicConsumedData ReliableQuicStream::WriteOrBuffer(StringPiece data, bool fin) {
|
| string(data.data() + consumed_data.bytes_consumed,
|
| data.length() - consumed_data.bytes_consumed));
|
| }
|
| -
|
| - return QuicConsumedData(data.size(), true);
|
| }
|
|
|
| void ReliableQuicStream::OnCanWrite() {
|
| @@ -232,7 +232,8 @@ void ReliableQuicStream::OnCanWrite() {
|
| if (queued_data_.size() == 1 && fin_buffered_) {
|
| fin = true;
|
| }
|
| - QuicConsumedData consumed_data = WriteDataInternal(data, fin);
|
| + struct iovec iov(MakeIovec(data));
|
| + QuicConsumedData consumed_data = WritevData(&iov, 1, fin, NULL);
|
| if (consumed_data.bytes_consumed == data.size() &&
|
| fin == consumed_data.fin_consumed) {
|
| queued_data_.pop_front();
|
| @@ -243,14 +244,7 @@ void ReliableQuicStream::OnCanWrite() {
|
| }
|
| }
|
|
|
| -QuicConsumedData ReliableQuicStream::WriteDataInternal(
|
| - StringPiece data, bool fin) {
|
| - struct iovec iov = {const_cast<char*>(data.data()),
|
| - static_cast<size_t>(data.size())};
|
| - return WritevDataInternal(&iov, 1, fin, NULL);
|
| -}
|
| -
|
| -QuicConsumedData ReliableQuicStream::WritevDataInternal(
|
| +QuicConsumedData ReliableQuicStream::WritevData(
|
| const struct iovec* iov,
|
| int iov_count,
|
| bool fin,
|
|
|