#pragma once
#include <ctime>
#include "memory/arena.h"
#include "port/sys_time.h"
#include "rocksdb/env.h"
#include "util/autovector.h"
namespace ROCKSDB_NAMESPACE {
class Logger;
class LogBuffer {
public:
LogBuffer(const InfoLogLevel log_level, Logger* info_log);
void AddLogToBuffer(size_t max_log_size, const char* format, va_list ap);
size_t IsEmpty() const { return logs_.empty(); }
void FlushBufferToLog();
static const size_t kDefaultMaxLogSize = 512;
private:
struct BufferedLog {
port::TimeVal now_tv; char message[1]; };
const InfoLogLevel log_level_;
Logger* info_log_;
Arena arena_;
autovector<BufferedLog*> logs_;
};
void LogToBuffer(LogBuffer* log_buffer, size_t max_log_size, const char* format,
...);
void LogToBuffer(LogBuffer* log_buffer, const char* format, ...);
}