Index: blimp/net/compressed_packet_writer.cc |
diff --git a/blimp/net/compressed_packet_writer.cc b/blimp/net/compressed_packet_writer.cc |
deleted file mode 100644 |
index 1bff4d9bc1266f6c052f0ee5d8e0540572f71c21..0000000000000000000000000000000000000000 |
--- a/blimp/net/compressed_packet_writer.cc |
+++ /dev/null |
@@ -1,123 +0,0 @@ |
-// Copyright 2016 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 "blimp/net/compressed_packet_writer.h" |
- |
-#include <vector> |
- |
-#include "base/logging.h" |
-#include "base/numerics/safe_conversions.h" |
-#include "base/sys_byteorder.h" |
-#include "blimp/net/common.h" |
-#include "net/base/io_buffer.h" |
-#include "third_party/zlib/zlib.h" |
- |
-namespace blimp { |
-namespace { |
- |
-// Allocate the maxmimum amount of memory to deflate (512KB) for higher |
-// compression. (See zconf.h for details on memLevel semantics.) |
-const int kZlibMemoryLevel = 9; |
- |
-// Byte count of the zlib end-of-block marker (0x00, 0x00, 0xFF, 0xFF). |
-// Used for buffer preallocation. |
-const size_t kZlibBlockMarkerSize = 4; |
- |
-} // namespace |
- |
-CompressedPacketWriter::CompressedPacketWriter( |
- std::unique_ptr<PacketWriter> sink) |
- : sink_(std::move(sink)), compressed_buf_(new net::GrowableIOBuffer) { |
- DCHECK(sink_); |
- |
- memset(&zlib_stream_, 0, sizeof(z_stream)); |
- |
- // MAX_WBITS means we are using the maximal window size for decompression; |
- // negating it means that we are ignoring headers and CRC checks. |
- int init_error = |
- deflateInit2(&zlib_stream_, Z_BEST_COMPRESSION, Z_DEFLATED, |
- -MAX_WBITS, // Negative value = no headers or CRC. |
- kZlibMemoryLevel, Z_DEFAULT_STRATEGY); |
- CHECK_EQ(Z_OK, init_error); |
-} |
- |
-CompressedPacketWriter::~CompressedPacketWriter() { |
- deflateEnd(&zlib_stream_); |
-} |
- |
-void CompressedPacketWriter::WritePacket( |
- const scoped_refptr<net::DrainableIOBuffer>& write_buffer, |
- const net::CompletionCallback& callback) { |
- DCHECK(write_buffer); |
- DCHECK(!callback.is_null()); |
- size_t uncompressed_size = |
- base::checked_cast<size_t>(write_buffer->BytesRemaining()); |
- |
- // Zero-length input => zero-length output. |
- if (uncompressed_size == 0) { |
- sink_->WritePacket(write_buffer, callback); |
- return; |
- } |
- |
- // Don't compress anything that's bigger than the maximum allowable payload |
- // size. |
- if (uncompressed_size > kMaxPacketPayloadSizeBytes) { |
- callback.Run(net::ERR_FILE_TOO_BIG); |
- return; |
- } |
- |
- int compress_result = Compress(write_buffer, compressed_buf_); |
- if (compress_result < 0) { |
- callback.Run(compress_result); |
- return; |
- } |
- |
-#if !defined(NDEBUG) |
- uncompressed_size_total_ += uncompressed_size; |
- compressed_size_total_ += compress_result; |
-#endif // !defined(NDEBUG) |
- |
- scoped_refptr<net::DrainableIOBuffer> compressed_outbuf( |
- new net::DrainableIOBuffer(compressed_buf_.get(), compress_result)); |
- sink_->WritePacket(compressed_outbuf, callback); |
- DVLOG(4) << "deflate packet: " << uncompressed_size << " in, " |
- << compress_result << " out."; |
- DVLOG(3) << "deflate total: " << uncompressed_size_total_ << " in, " |
- << compressed_size_total_ << " out."; |
-} |
- |
-int CompressedPacketWriter::Compress( |
- const scoped_refptr<net::DrainableIOBuffer>& src_buf, |
- const scoped_refptr<net::GrowableIOBuffer>& dest_buf) { |
- DCHECK_EQ(0, dest_buf->offset()); |
- |
- // Preallocate a buffer that's large enough to fit the compressed contents of |
- // src_buf, plus some overhead for zlib. |
- const int zlib_output_ubound = |
- deflateBound(&zlib_stream_, src_buf->BytesRemaining()) + |
- kZlibBlockMarkerSize; |
- if (dest_buf->capacity() < zlib_output_ubound) { |
- dest_buf->SetCapacity(zlib_output_ubound); |
- } |
- |
- zlib_stream_.next_in = reinterpret_cast<uint8_t*>(src_buf->data()); |
- zlib_stream_.avail_in = static_cast<unsigned>(src_buf->BytesRemaining()); |
- zlib_stream_.next_out = reinterpret_cast<uint8_t*>(dest_buf->data()); |
- zlib_stream_.avail_out = static_cast<unsigned>(zlib_output_ubound); |
- int deflate_error = deflate(&zlib_stream_, Z_SYNC_FLUSH); |
- |
- if (deflate_error != Z_OK) { |
- DLOG(FATAL) << "Unexpected deflate() return value: " << deflate_error; |
- return net::ERR_UNEXPECTED; |
- } |
- if (zlib_stream_.avail_in > 0) { |
- DLOG(ERROR) << "deflate() did not consume all data, remainder: " |
- << zlib_stream_.avail_in << " bytes."; |
- return net::ERR_UNEXPECTED; |
- } |
- |
- return zlib_output_ubound - zlib_stream_.avail_out; |
-} |
- |
-} // namespace blimp |