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