1
0
forked from metin2/server
server/game/src/lzo_manager.cpp
2022-03-05 12:44:06 +02:00

47 lines
912 B
C++

#include "stdafx.h"
#include "lzo_manager.h"
LZOManager::LZOManager()
{
if (lzo_init() != LZO_E_OK)
{
fprintf(stderr, "lzo_init() failed\n");
abort();
}
m_workmem = (BYTE *) malloc(LZO1X_MEM_COMPRESS);
memset( m_workmem, 0, LZO1X_MEM_COMPRESS );
}
LZOManager::~LZOManager()
{
free(m_workmem);
m_workmem = NULL;
}
bool LZOManager::Compress(const BYTE* src, size_t srcsize, BYTE* dest, lzo_uint * puiDestSize)
{
int ret = lzo1x_1_compress(src, srcsize, dest, puiDestSize, GetWorkMemory());
if (ret != LZO_E_OK)
return false;
return true;
}
bool LZOManager::Decompress(const BYTE * src, size_t srcsize, BYTE * dest, lzo_uint * puiDestSize)
{
int ret = lzo1x_decompress_safe(src, srcsize, dest, puiDestSize, GetWorkMemory());
if (ret != LZO_E_OK)
return false;
return true;
}
size_t LZOManager::GetMaxCompressedSize(size_t original)
{
return (original + (original >> 4) + 64 + 3);
}