class Compressor;
typedef shared_ptr<Compressor> CompressorRef;
-
class Compressor {
+ string type;
public:
+ Compressor(string t) : type(t) {}
virtual ~Compressor() {}
+ const string& get_type() const {
+ return type;
+ }
virtual int compress(const bufferlist &in, bufferlist &out) = 0;
virtual int decompress(const bufferlist &in, bufferlist &out) = 0;
- virtual int decompress(bufferlist::iterator &p, bufferlist &out) = 0; //that's a bit weird but we need non-const iterator to be in alignment with decode methods
+ // this is a bit weird but we need non-const iterator to be in
+ // alignment with decode methods
+ virtual int decompress(bufferlist::iterator &p, bufferlist &out) = 0;
static CompressorRef create(CephContext *cct, const string &type);
};
-
-
#endif
};
class SnappyCompressor : public Compressor {
-
-
public:
- virtual ~SnappyCompressor() {}
- virtual const char* get_method_name() { return "snappy"; }
- virtual int compress(const bufferlist &src, bufferlist &dst) {
+ SnappyCompressor() : Compressor("snappy") {}
+ int compress(const bufferlist &src, bufferlist &dst) override {
BufferlistSource source(const_cast<bufferlist&>(src).begin());
bufferptr ptr(snappy::MaxCompressedLength(src.length()));
snappy::UncheckedByteArraySink sink(ptr.c_str());
dst.append(ptr, 0, sink.CurrentDestination()-ptr.c_str());
return 0;
}
- virtual int decompress(const bufferlist &src, bufferlist &dst) {
+ int decompress(const bufferlist &src, bufferlist &dst) override {
bufferlist::iterator i = const_cast<bufferlist&>(src).begin();
return decompress(i, dst);
}
- virtual int decompress(bufferlist::iterator &p, bufferlist &dst) {
+ int decompress(bufferlist::iterator &p, bufferlist &dst) override {
size_t res_len = 0;
// Trick, decompress only need first 32bits buffer
bufferlist::const_iterator ptmp = p;
const long unsigned int max_len = 2048;
-const char* CompressionZlib::get_method_name()
-{
- return "zlib";
-}
-
int CompressionZlib::compress(const bufferlist &in, bufferlist &out)
{
int ret;
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
/*
* Ceph - scalable distributed file system
*
*
*/
-
#ifndef CEPH_COMPRESSION_ZLIB_H
#define CEPH_COMPRESSION_ZLIB_H
-// -----------------------------------------------------------------------------
#include "compressor/Compressor.h"
-// -----------------------------------------------------------------------------
-#include <list>
-// -----------------------------------------------------------------------------
class CompressionZlib : public Compressor {
- const char version = '1';
-public:
-
- CompressionZlib()
- {
- }
-
- virtual
- ~CompressionZlib()
- {
- }
-
- virtual int compress(const bufferlist &in, bufferlist &out);
- virtual int decompress(const bufferlist &in, bufferlist &out);
- virtual int decompress(bufferlist::iterator &p, bufferlist &out);
- virtual const char* get_method_name();
+ const char version = '1';
+public:
+ CompressionZlib() : Compressor("zlib") {}
+ int compress(const bufferlist &in, bufferlist &out) override;
+ int decompress(const bufferlist &in, bufferlist &out) override;
+ int decompress(bufferlist::iterator &p, bufferlist &out) override;
};
class CompressorExample : public Compressor {
public:
+ CompressorExample() : Compressor("example") {}
virtual ~CompressorExample() {}
virtual int compress(const bufferlist &in, bufferlist &out)
p.copy(p.get_remaining(), out);
return 0;
}
- virtual const char* get_method_name()
- {
- return "example";
- }
-
};
#endif
TEST(SnappyCompressor, compress_decompress)
{
SnappyCompressor sp;
- EXPECT_EQ(sp.get_method_name(), "snappy");
+ EXPECT_EQ(sp.get_type(), "snappy");
const char* test = "This is test text";
int len = strlen(test);
bufferlist in, out;
const size_t small_prefix_size=3;
SnappyCompressor sp;
- EXPECT_EQ(sp.get_method_name(), "snappy");
+ EXPECT_EQ(sp.get_type(), "snappy");
string test(128*1024,0);
int len = test.size();
bufferlist in, out;
TEST(CompressionZlib, compress_decompress)
{
CompressionZlib sp;
- EXPECT_STREQ(sp.get_method_name(), "zlib");
+ EXPECT_STREQ(sp.get_type(), "zlib");
const char* test = "This is test text";
int len = strlen(test);
bufferlist in, out;
TEST(CompressionZlib, compress_decompress_chunk)
{
CompressionZlib sp;
- EXPECT_STREQ(sp.get_method_name(), "zlib");
+ EXPECT_STREQ(sp.get_type(), "zlib");
const char* test = "This is test text";
buffer::ptr test2 ("1234567890", 10);
int len = strlen(test);