diff options
Diffstat (limited to 'net/tools/quic/quic_packet_writer_wrapper.h')
-rw-r--r-- | net/tools/quic/quic_packet_writer_wrapper.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/net/tools/quic/quic_packet_writer_wrapper.h b/net/tools/quic/quic_packet_writer_wrapper.h new file mode 100644 index 0000000..4a74ce8 --- /dev/null +++ b/net/tools/quic/quic_packet_writer_wrapper.h @@ -0,0 +1,51 @@ +// Copyright 2014 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. + +#ifndef NET_TOOLS_QUIC_QUIC_PACKET_WRITER_WRAPPER_H_ +#define NET_TOOLS_QUIC_QUIC_PACKET_WRITER_WRAPPER_H_ + +#include "base/memory/scoped_ptr.h" +#include "net/quic/quic_packet_writer.h" + +namespace net { + +namespace tools { + +// Wraps a writer object to allow dynamically extending functionality. Use +// cases: replace writer while dispatcher and connections hold on to the +// wrapper; mix in monitoring in internal server; mix in mocks in unit tests. +class QuicPacketWriterWrapper : public net::QuicPacketWriter { + public: + QuicPacketWriterWrapper(); + explicit QuicPacketWriterWrapper(QuicPacketWriter* writer); + virtual ~QuicPacketWriterWrapper(); + + // Default implementation of the QuicPacketWriter interface. Passes everything + // to |writer_|. + virtual WriteResult WritePacket( + const char* buffer, + size_t buf_len, + const IPAddressNumber& self_address, + const IPEndPoint& peer_address, + QuicBlockedWriterInterface* blocked_writer) OVERRIDE; + virtual bool IsWriteBlockedDataBuffered() const OVERRIDE; + virtual bool IsWriteBlocked() const OVERRIDE; + virtual void SetWritable() OVERRIDE; + + // Takes ownership of |writer|. + void set_writer(QuicPacketWriter* writer); + + // Releases ownership of |writer_|. + QuicPacketWriter* release_writer(); + + private: + scoped_ptr<QuicPacketWriter> writer_; + + DISALLOW_COPY_AND_ASSIGN(QuicPacketWriterWrapper); +}; + +} // namespace tools +} // namespace net + +#endif // NET_TOOLS_QUIC_QUIC_PACKET_WRITER_WRAPPER_H_ |