Merge remote-tracking branch 'origin/topic/jsiwek/faster-val-clone'

* origin/topic/jsiwek/faster-val-clone:
  Refactor SerializationFormat::EndWrite and ChunkedIO::Chunk mem mgmt.
  Improve SerializationFormat's write buffer growth strategy.

BIT-1161 #merged
This commit is contained in:
Robin Sommer 2014-03-30 20:12:30 +02:00
commit 2f6146aa55
11 changed files with 105 additions and 86 deletions

View file

@ -11,7 +11,7 @@
#ifdef NEED_KRB5_H
# include <krb5.h>
#endif
#endif
#include <openssl/ssl.h>
#include <openssl/err.h>
@ -26,10 +26,28 @@ public:
ChunkedIO();
virtual ~ChunkedIO() { }
typedef struct {
struct Chunk {
typedef void (*FreeFunc)(char*);
static void free_func_free(char* data) { free(data); }
static void free_func_delete(char* data) { delete [] data; }
Chunk()
: data(), len(), free_func(free_func_delete)
{ }
// Takes ownership of data.
Chunk(char* arg_data, uint32 arg_len,
FreeFunc arg_ff = free_func_delete)
: data(arg_data), len(arg_len), free_func(arg_ff)
{ }
~Chunk()
{ free_func(data); }
char* data;
uint32 len;
} Chunk;
FreeFunc free_func;
};
// Initialization before any I/O operation is performed. Returns false
// on any form of error.