diff options
Diffstat (limited to 'chromium/net/third_party/quiche/src/quiche/quic/test_tools/bad_packet_writer.cc')
-rw-r--r-- | chromium/net/third_party/quiche/src/quiche/quic/test_tools/bad_packet_writer.cc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/chromium/net/third_party/quiche/src/quiche/quic/test_tools/bad_packet_writer.cc b/chromium/net/third_party/quiche/src/quiche/quic/test_tools/bad_packet_writer.cc new file mode 100644 index 00000000000..1e146c4376f --- /dev/null +++ b/chromium/net/third_party/quiche/src/quiche/quic/test_tools/bad_packet_writer.cc @@ -0,0 +1,35 @@ +// Copyright 2017 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. + +#include "quiche/quic/test_tools/bad_packet_writer.h" + +namespace quic { +namespace test { + +BadPacketWriter::BadPacketWriter(size_t packet_causing_write_error, + int error_code) + : packet_causing_write_error_(packet_causing_write_error), + error_code_(error_code) {} + +BadPacketWriter::~BadPacketWriter() {} + +WriteResult BadPacketWriter::WritePacket(const char* buffer, size_t buf_len, + const QuicIpAddress& self_address, + const QuicSocketAddress& peer_address, + PerPacketOptions* options) { + if (error_code_ == 0 || packet_causing_write_error_ > 0) { + if (packet_causing_write_error_ > 0) { + --packet_causing_write_error_; + } + return QuicPacketWriterWrapper::WritePacket(buffer, buf_len, self_address, + peer_address, options); + } + // It's time to cause write error. + int error_code = error_code_; + error_code_ = 0; + return WriteResult(WRITE_STATUS_ERROR, error_code); +} + +} // namespace test +} // namespace quic |