| // 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 |