summaryrefslogtreecommitdiffstats
path: root/tinySIGCOMP/src/tcomp_deflatedata.zlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'tinySIGCOMP/src/tcomp_deflatedata.zlib.c')
-rwxr-xr-xtinySIGCOMP/src/tcomp_deflatedata.zlib.c266
1 files changed, 132 insertions, 134 deletions
diff --git a/tinySIGCOMP/src/tcomp_deflatedata.zlib.c b/tinySIGCOMP/src/tcomp_deflatedata.zlib.c
index 6d8c628..1219c15 100755
--- a/tinySIGCOMP/src/tcomp_deflatedata.zlib.c
+++ b/tinySIGCOMP/src/tcomp_deflatedata.zlib.c
@@ -2,19 +2,19 @@
* Copyright (C) 2010-2011 Mamadou Diop.
*
* Contact: Mamadou Diop <diopmamadou(at)doubango[dot]org>
-*
+*
* This file is part of Open Source Doubango Framework.
*
* DOUBANGO 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.
-*
+*
* DOUBANGO 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 DOUBANGO.
*
@@ -33,185 +33,183 @@
tsk_bool_t tcomp_deflateStream_end(tcomp_deflateStream_t *stream)
{
- if(!stream){
- TSK_DEBUG_ERROR("NULL defalte stream.");
- return tsk_false;
- }
+ if(!stream) {
+ TSK_DEBUG_ERROR("NULL defalte stream.");
+ return tsk_false;
+ }
- return deflateEnd(&(stream->zs));
+ return deflateEnd(&(stream->zs));
}
tsk_bool_t tcomp_deflateStream_copy(tcomp_deflateStream_t *stream, tcomp_deflateStream_t *source)
{
- if(!stream){
- TSK_DEBUG_ERROR("NULL defalte stream.");
- return tsk_false;
- }
+ if(!stream) {
+ TSK_DEBUG_ERROR("NULL defalte stream.");
+ return tsk_false;
+ }
- return deflateCopy(&(stream->zs), &(source->zs));
+ return deflateCopy(&(stream->zs), &(source->zs));
}
tsk_bool_t tcomp_deflatedata_zInit(tcomp_deflatedata_t *deflatedata)
{
- if(!deflatedata){
- TSK_DEBUG_ERROR("NULL defalte data.");
- return tsk_false;
- }
+ if(!deflatedata) {
+ TSK_DEBUG_ERROR("NULL defalte data.");
+ return tsk_false;
+ }
- /* Already initialized? */
- if(deflatedata->isInitialized) {
- return tsk_true;
- }
+ /* Already initialized? */
+ if(deflatedata->isInitialized) {
+ return tsk_true;
+ }
- /* allocate deflate state */
+ /* allocate deflate state */
deflatedata->stream_1.zs.zalloc = deflatedata->stream_acked.zs.zalloc = Z_NULL;
deflatedata->stream_1.zs.zfree = deflatedata->stream_acked.zs.zfree = Z_NULL;
deflatedata->stream_1.zs.opaque = deflatedata->stream_acked.zs.opaque = Z_NULL;
#ifndef __SYMBIAN32__
- deflatedata->stream_1.zs.data_type = deflatedata->stream_acked.zs.data_type = Z_TEXT;
+ deflatedata->stream_1.zs.data_type = deflatedata->stream_acked.zs.data_type = Z_TEXT;
#endif
//bool ret = (deflateInit(&this->zStream, this->zLevel) == Z_OK);
- if( deflateInit2(&deflatedata->stream_1.zs, deflatedata->zLevel, Z_DEFLATED, -deflatedata->zWindowBits, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY) != Z_OK
- || deflateInit2(&deflatedata->stream_acked.zs, deflatedata->zLevel, Z_DEFLATED, -deflatedata->zWindowBits, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY) != Z_OK )
- {
- return tsk_false;
- }
+ if( deflateInit2(&deflatedata->stream_1.zs, deflatedata->zLevel, Z_DEFLATED, -deflatedata->zWindowBits, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY) != Z_OK
+ || deflateInit2(&deflatedata->stream_acked.zs, deflatedata->zLevel, Z_DEFLATED, -deflatedata->zWindowBits, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY) != Z_OK ) {
+ return tsk_false;
+ }
#if USE_DICTS_FOR_COMPRESSION
- if( deflateSetDictionary(this->stream_1.zs, (const Bytef*)RFC3485_DICTIONARY_SIP_VALUE, RFC3485_DICTIONARY_SIP_VALUE_LENGTH) != Z_OK
- || deflateSetDictionary(this->stream_acked.zs, (const Bytef*)RFC3485_DICTIONARY_SIP_VALUE, RFC3485_DICTIONARY_SIP_VALUE_LENGTH) != Z_OK )
- {
- return false;
- }
+ if( deflateSetDictionary(this->stream_1.zs, (const Bytef*)RFC3485_DICTIONARY_SIP_VALUE, RFC3485_DICTIONARY_SIP_VALUE_LENGTH) != Z_OK
+ || deflateSetDictionary(this->stream_acked.zs, (const Bytef*)RFC3485_DICTIONARY_SIP_VALUE, RFC3485_DICTIONARY_SIP_VALUE_LENGTH) != Z_OK ) {
+ return false;
+ }
#endif
- deflatedata->stream_1.stateful = deflatedata->stream_acked.stateful = 0;
- deflatedata->stream_1.dataWaitingAck = deflatedata->stream_acked.dataWaitingAck = 0;
- deflatedata->isInitialized = tsk_true;
+ deflatedata->stream_1.stateful = deflatedata->stream_acked.stateful = 0;
+ deflatedata->stream_1.dataWaitingAck = deflatedata->stream_acked.dataWaitingAck = 0;
+ deflatedata->isInitialized = tsk_true;
- return tsk_true;
+ return tsk_true;
}
tsk_bool_t tcomp_deflatedata_zUnInit(tcomp_deflatedata_t *deflatedata)
{
- if(!deflatedata){
- TSK_DEBUG_ERROR("NULL defalte data.");
- return tsk_false;
- }
-
- if(deflatedata->isInitialized){
- deflatedata->isInitialized = tsk_false;
-
- deflatedata->stream_1.dataWaitingAck = deflatedata->stream_acked.dataWaitingAck = 0;
- deflatedata->stream_1.stateful = deflatedata->stream_acked.stateful = 0;
-
- return (tcomp_deflateStream_end(&deflatedata->stream_1) != Z_STREAM_ERROR) && (tcomp_deflateStream_end(&deflatedata->stream_acked) != Z_STREAM_ERROR);
- }
- return tsk_true;
+ if(!deflatedata) {
+ TSK_DEBUG_ERROR("NULL defalte data.");
+ return tsk_false;
+ }
+
+ if(deflatedata->isInitialized) {
+ deflatedata->isInitialized = tsk_false;
+
+ deflatedata->stream_1.dataWaitingAck = deflatedata->stream_acked.dataWaitingAck = 0;
+ deflatedata->stream_1.stateful = deflatedata->stream_acked.stateful = 0;
+
+ return (tcomp_deflateStream_end(&deflatedata->stream_1) != Z_STREAM_ERROR) && (tcomp_deflateStream_end(&deflatedata->stream_acked) != Z_STREAM_ERROR);
+ }
+ return tsk_true;
}
tsk_bool_t tcomp_deflatedata_zReset(tcomp_deflatedata_t *deflatedata)
{
- tsk_bool_t ret;
+ tsk_bool_t ret;
+
+ if(!deflatedata) {
+ TSK_DEBUG_ERROR("NULL defalte data.");
+ return tsk_false;
+ }
- if(!deflatedata){
- TSK_DEBUG_ERROR("NULL defalte data.");
- return tsk_false;
- }
+ ret = deflatedata->isInitialized ? tcomp_deflatedata_zUnInit(deflatedata) : tsk_true;
+ ret &= tcomp_deflatedata_zInit(deflatedata);
- ret = deflatedata->isInitialized ? tcomp_deflatedata_zUnInit(deflatedata) : tsk_true;
- ret &= tcomp_deflatedata_zInit(deflatedata);
-
- return ret;
+ return ret;
}
tsk_bool_t tcomp_deflatedata_zCompress(tcomp_deflatedata_t *deflatedata, const void* in, tsk_size_t inLen, void* out, tsk_size_t* outLen, tsk_bool_t *stateChanged)
{
- int ret = tsk_false;
-/*
- Two streams [1] and [2]
-
- * ZINIT/ZUNINIT/ZRESET
- XXX([1])
- XXX([2])
-
- * COMPRESSION
- [1]->END()
- [1]<-COPY-[2]
- [1]->COMPRESS()
-
- * ACK
- [2]->END()
- [2]<-COPY-[1]
- updateGhost([1])
-*/
- if(!deflatedata){
- TSK_DEBUG_ERROR("Invalid parameter");
- return tsk_false;
- }
-
- tsk_safeobj_lock(deflatedata);
-
- /* Initialized? */
- if(!deflatedata->isInitialized){
- if(!tcomp_deflatedata_zInit(deflatedata)){
- TSK_DEBUG_ERROR("Failed to initialize zlib resources..");
- tsk_safeobj_unlock(deflatedata);
- return tsk_false;
- }
- }
-
- if(deflatedata->useOnlyACKedStates){
- if(!deflatedata->stream_acked.dataWaitingAck){
- deflatedata->stream_acked.dataWaitingAck = 1;
- *stateChanged = tsk_true;
- }
- else{
- *stateChanged = tsk_false;
- }
-
- /* END() + COPY() ==> use acked state */
- tcomp_deflateStream_end(&(deflatedata->stream_1));
- tcomp_deflateStream_copy(&(deflatedata->stream_1), &(deflatedata->stream_acked));
- }
- else{
- *stateChanged = tsk_true;
- }
-
- // IN
- deflatedata->stream_1.zs.next_in = (Bytef*)in;
+ int ret = tsk_false;
+ /*
+ Two streams [1] and [2]
+
+ * ZINIT/ZUNINIT/ZRESET
+ XXX([1])
+ XXX([2])
+
+ * COMPRESSION
+ [1]->END()
+ [1]<-COPY-[2]
+ [1]->COMPRESS()
+
+ * ACK
+ [2]->END()
+ [2]<-COPY-[1]
+ updateGhost([1])
+ */
+ if(!deflatedata) {
+ TSK_DEBUG_ERROR("Invalid parameter");
+ return tsk_false;
+ }
+
+ tsk_safeobj_lock(deflatedata);
+
+ /* Initialized? */
+ if(!deflatedata->isInitialized) {
+ if(!tcomp_deflatedata_zInit(deflatedata)) {
+ TSK_DEBUG_ERROR("Failed to initialize zlib resources..");
+ tsk_safeobj_unlock(deflatedata);
+ return tsk_false;
+ }
+ }
+
+ if(deflatedata->useOnlyACKedStates) {
+ if(!deflatedata->stream_acked.dataWaitingAck) {
+ deflatedata->stream_acked.dataWaitingAck = 1;
+ *stateChanged = tsk_true;
+ }
+ else {
+ *stateChanged = tsk_false;
+ }
+
+ /* END() + COPY() ==> use acked state */
+ tcomp_deflateStream_end(&(deflatedata->stream_1));
+ tcomp_deflateStream_copy(&(deflatedata->stream_1), &(deflatedata->stream_acked));
+ }
+ else {
+ *stateChanged = tsk_true;
+ }
+
+ // IN
+ deflatedata->stream_1.zs.next_in = (Bytef*)in;
deflatedata->stream_1.zs.avail_in = (uInt)inLen;
-
- // OUT
- deflatedata->stream_1.zs.next_out = (Bytef*)out;
+
+ // OUT
+ deflatedata->stream_1.zs.next_out = (Bytef*)out;
deflatedata->stream_1.zs.avail_out = (uInt)*outLen;
-
- ret = deflate(&(deflatedata->stream_1.zs), Z_SYNC_FLUSH);
-
- *outLen -= deflatedata->stream_1.zs.avail_out;
-
- tsk_safeobj_unlock(deflatedata);
-
- return (ret == Z_OK);
+
+ ret = deflate(&(deflatedata->stream_1.zs), Z_SYNC_FLUSH);
+
+ *outLen -= deflatedata->stream_1.zs.avail_out;
+
+ tsk_safeobj_unlock(deflatedata);
+
+ return (ret == Z_OK);
}
int tcomp_deflatedata_zGetWindowBits(tcomp_deflatedata_t *deflatedata)
{
- if(!deflatedata){
- TSK_DEBUG_ERROR("Invalid parameter");
- return 0;
- }
+ if(!deflatedata) {
+ TSK_DEBUG_ERROR("Invalid parameter");
+ return 0;
+ }
- return deflatedata->zWindowBits;
+ return deflatedata->zWindowBits;
}
void tcomp_deflatedata_zSetWindowBits(tcomp_deflatedata_t *deflatedata, int windowSize)
{
- if(!deflatedata){
- TSK_DEBUG_ERROR("Invalid parameter");
- return;
- }
+ if(!deflatedata) {
+ TSK_DEBUG_ERROR("Invalid parameter");
+ return;
+ }
- deflatedata->zWindowBits = windowSize;
+ deflatedata->zWindowBits = windowSize;
}
OpenPOWER on IntegriCloud