| /* |
| This file is part of libmicrospdy |
| Copyright Copyright (C) 2012 Andrey Uzunov |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation, either version 3 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <http://www.gnu.org/licenses/>. |
| */ |
| |
| /** |
| * @file compression.h |
| * @brief zlib handling functions |
| * @author Andrey Uzunov |
| */ |
| |
| #ifndef COMPRESSION_H |
| #define COMPRESSION_H |
| |
| #include "platform.h" |
| |
| /* size of buffers used by zlib on (de)compressing */ |
| #define SPDYF_ZLIB_CHUNK 16384 |
| |
| |
| /** |
| * Initializes the zlib stream for compression. Must be called once |
| * for a session on initialization. |
| * |
| * @param strm Zlib stream on which we work |
| * @return SPDY_NO if zlib failed. SPDY_YES otherwise |
| */ |
| int |
| SPDYF_zlib_deflate_init(z_stream *strm); |
| |
| |
| /** |
| * Deinitializes the zlib stream for compression. Should be called once |
| * for a session on cleaning up. |
| * |
| * @param strm Zlib stream on which we work |
| */ |
| void |
| SPDYF_zlib_deflate_end(z_stream *strm); |
| |
| |
| /** |
| * Compressing stream with zlib. |
| * |
| * @param strm Zlib stream on which we work |
| * @param src stream of the data to be compressed |
| * @param src_size size of the data |
| * @param data_used the number of bytes from src_stream that were used |
| * TODO do we need |
| * @param dest the resulting compressed stream. Should be NULL. Must be |
| * freed later manually. |
| * @param dest_size size of the data after compression |
| * @return SPDY_NO if malloc or zlib failed. SPDY_YES otherwise |
| */ |
| int |
| SPDYF_zlib_deflate(z_stream *strm, |
| const void *src, |
| size_t src_size, |
| size_t *data_used, |
| void **dest, |
| size_t *dest_size); |
| |
| |
| /** |
| * Initializes the zlib stream for decompression. Must be called once |
| * for a session. |
| * |
| * @param strm Zlib stream on which we work |
| * @return SPDY_NO if zlib failed. SPDY_YES otherwise |
| */ |
| int |
| SPDYF_zlib_inflate_init(z_stream *strm); |
| |
| |
| /** |
| * Deinitializes the zlib stream for decompression. Should be called once |
| * for a session on cleaning up. |
| * |
| * @param strm Zlib stream on which we work |
| */ |
| void |
| SPDYF_zlib_inflate_end(z_stream *strm); |
| |
| |
| /** |
| * Decompressing stream with zlib. |
| * |
| * @param strm Zlib stream on which we work |
| * @param src stream of the data to be decompressed |
| * @param src_size size of the data |
| * @param dest the resulting decompressed stream. Should be NULL. Must |
| * be freed manually. |
| * @param dest_size size of the data after decompression |
| * @return SPDY_NO if malloc or zlib failed. SPDY_YES otherwise. If the |
| * function fails, the SPDY session must be closed |
| */ |
| int |
| SPDYF_zlib_inflate(z_stream *strm, |
| const void *src, |
| size_t src_size, |
| void **dest, |
| size_t *dest_size); |
| |
| #endif |