Files
mir_server/Gateway/srvlib/include/zstream.h

127 lines
2.7 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _WYL_ZLIB_STREAM_H_
#define _WYL_ZLIB_STREAM_H_
/******************************************************************
*
* ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ʽ<EFBFBD><EFBFBD>װZIPѹ<EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
*****************************************************************/
namespace zstream
{
/* ZLib<69><62><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD>
*/
class BaseZStream
: public stream::BaseStream
{
public:
typedef BaseStream Inherited;
protected:
BaseStream* strm_; //zlib<69><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
int strm_pos_; //Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
z_stream z_strm_; //zlib<69><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z_stream<61>
Bytef buff_[0xffff]; //zlib<69><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int last_code_; //<2F><>һ<EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>
private:
static void* zlibAllocMem(BaseZStream& ZStream, uInt Items, uInt Size);
static void zlibFreeMem(BaseZStream& ZStream, void* lpBlock);
protected:
//zlib<69><62><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EBBAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷţ<CDB7><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ̳<DABC><CCB3><EFBFBD><EFBFBD>и<EFBFBD><D0B8>Ǵ˺<C7B4><CBBA><EFBFBD>
virtual void* AllocStream(int size);
//zlib<69><62><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>ڴ溯<DAB4><E6BAAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷţ<CDB7><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ̳<DABC><CCB3><EFBFBD><EFBFBD>и<EFBFBD><D0B8>Ǵ˺<C7B4><CBBA><EFBFBD>
virtual void Free(void* ptr);
//zlib<69><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8>Ǵ˺<C7B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual void DoProgress();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>
inline void setLastCode(const int code)
{
last_code_ = code;
}
public:
BaseZStream(BaseStream& stream, BaseAllocator* alloc);
virtual ~BaseZStream();
//int seek(const int tOffset, const int Origin)
//{
// return 0;
//}
//int read(void* lpBuffer, const int tSizeToRead)
//{
// return 0;
//}
//int write(const void* lpBuffer, const size_t tSizeToWrite)
//{
// return 0;
//}
//int copyFrom(BaseStream& stream, int tSizeToCopy = 0)
//{
// return 0;
//}
//<2F><>ȡ<EFBFBD><C8A1>һ<EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>
inline int getLastCode()
{
return last_code_;
}
inline int succeeded()
{
return last_code_ >= 0;
}
};
/* ZLibѹ<62><D1B9><EFBFBD><EFBFBD>
<EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
class ZCompressionStream
: public BaseZStream
{
public:
typedef BaseZStream Inherited;
enum CompressionLevel
{
clNone = 0, //<2F><><EFBFBD>棨δѹ<CEB4><D1B9><EFBFBD><EFBFBD>
clFastest, //<2F><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ٶȿ죬<C8BF><ECA3AC>ʡʱ<CAA1>䵫ѹ<E4B5AB><D1B9><EFBFBD>Ȳ<EFBFBD><C8B2>ߣ<EFBFBD>
clDefault, //Ĭ<><C4AC>ѹ<EFBFBD><D1B9><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ٶȺ<D9B6>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>У<EFBFBD>
clMax, //<2F><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ȣ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>Ƚϸߣ<CFB8>
};
public:
ZCompressionStream(BaseStream& destStream, CompressionLevel CmprsLvl, BaseAllocator* alloc);
~ZCompressionStream();
int seek(const int tOffset, const int Origin);
//int read(void* lpBuffer, const int tSizeToRead)
//{
// return -1;
//}
int write(const void* lpBuffer, const size_t tSizeToWrite);
//<2F>ύѹ<E1BDBB><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
void finish();
//<2F><>ȡѹ<C8A1><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
inline float getCompressionRate()
{
if (z_strm_.total_in == 0)
return 0;
else return (1.0f - ((float)z_strm_.total_out / z_strm_.total_in)) * 100.0f;
}
virtual int read(void* lpBuffer, const int tSizeToRead)
{
return 0;
}
};
};
#endif