1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "quiche/quic/test_tools/bad_packet_writer.h"
6
7 namespace quic {
8 namespace test {
9
BadPacketWriter(size_t packet_causing_write_error,int error_code)10 BadPacketWriter::BadPacketWriter(size_t packet_causing_write_error,
11 int error_code)
12 : packet_causing_write_error_(packet_causing_write_error),
13 error_code_(error_code) {}
14
~BadPacketWriter()15 BadPacketWriter::~BadPacketWriter() {}
16
WritePacket(const char * buffer,size_t buf_len,const QuicIpAddress & self_address,const QuicSocketAddress & peer_address,PerPacketOptions * options)17 WriteResult BadPacketWriter::WritePacket(const char* buffer, size_t buf_len,
18 const QuicIpAddress& self_address,
19 const QuicSocketAddress& peer_address,
20 PerPacketOptions* options) {
21 if (error_code_ == 0 || packet_causing_write_error_ > 0) {
22 if (packet_causing_write_error_ > 0) {
23 --packet_causing_write_error_;
24 }
25 return QuicPacketWriterWrapper::WritePacket(buffer, buf_len, self_address,
26 peer_address, options);
27 }
28 // It's time to cause write error.
29 int error_code = error_code_;
30 error_code_ = 0;
31 return WriteResult(WRITE_STATUS_ERROR, error_code);
32 }
33
34 } // namespace test
35 } // namespace quic
36