summaryrefslogtreecommitdiff
path: root/src/common/compress_zstd.h
diff options
context:
space:
mode:
authorAlexander Færøy <ahf@torproject.org>2017-04-18 22:19:29 +0200
committerNick Mathewson <nickm@torproject.org>2017-04-25 08:10:09 -0400
commit380736d045f85299121f044928170cff321ae852 (patch)
tree4b6590a5ee0a5c08e1e128fc8ee9bf0938e75bc8 /src/common/compress_zstd.h
parentce1feae9d9a4366e3cd93a68416841d0c6a636c5 (diff)
downloadtor-380736d045f85299121f044928170cff321ae852.tar.gz
tor-380736d045f85299121f044928170cff321ae852.zip
Add Zstandard support.
See: https://bugs.torproject.org/21662
Diffstat (limited to 'src/common/compress_zstd.h')
-rw-r--r--src/common/compress_zstd.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/common/compress_zstd.h b/src/common/compress_zstd.h
new file mode 100644
index 0000000000..ec83ba961e
--- /dev/null
+++ b/src/common/compress_zstd.h
@@ -0,0 +1,56 @@
+/* Copyright (c) 2003, Roger Dingledine
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2017, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file compress_zstd.h
+ * \brief Header for compress_zstd.c
+ **/
+
+#ifndef TOR_COMPRESS_ZSTD_H
+#define TOR_COMPRESS_ZSTD_H
+
+const char *
+tor_zstd_get_version_str(void);
+
+const char *
+tor_zstd_get_header_version_str(void);
+
+int
+tor_zstd_compress(char **out, size_t *out_len,
+ const char *in, size_t in_len,
+ compress_method_t method);
+
+int
+tor_zstd_uncompress(char **out, size_t *out_len,
+ const char *in, size_t in_len,
+ compress_method_t method,
+ int complete_only,
+ int protocol_warn_level);
+
+/** Internal state for an incremental Zstandard compression/decompression. */
+typedef struct tor_zstd_compress_state_t tor_zstd_compress_state_t;
+
+tor_zstd_compress_state_t *
+tor_zstd_compress_new(int compress,
+ compress_method_t method,
+ compression_level_t compression_level);
+
+tor_compress_output_t
+tor_zstd_compress_process(tor_zstd_compress_state_t *state,
+ char **out, size_t *out_len,
+ const char **in, size_t *in_len,
+ int finish);
+
+void
+tor_zstd_compress_free(tor_zstd_compress_state_t *state);
+
+size_t
+tor_zstd_compress_state_size(const tor_zstd_compress_state_t *state);
+
+size_t
+tor_zstd_get_total_allocation(void);
+
+#endif // TOR_COMPRESS_ZSTD_H.
+