]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/util/event_logger.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / rocksdb / util / event_logger.h
diff --git a/ceph/src/rocksdb/util/event_logger.h b/ceph/src/rocksdb/util/event_logger.h
deleted file mode 100644 (file)
index d88a6a4..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-//  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
-//  This source code is licensed under both the GPLv2 (found in the
-//  COPYING file in the root directory) and Apache 2.0 License
-//  (found in the LICENSE.Apache file in the root directory).
-
-#pragma once
-
-#include <memory>
-#include <sstream>
-#include <string>
-#include <chrono>
-
-#include "rocksdb/env.h"
-#include "util/log_buffer.h"
-
-namespace rocksdb {
-
-class JSONWriter {
- public:
-  JSONWriter() : state_(kExpectKey), first_element_(true), in_array_(false) {
-    stream_ << "{";
-  }
-
-  void AddKey(const std::string& key) {
-    assert(state_ == kExpectKey);
-    if (!first_element_) {
-      stream_ << ", ";
-    }
-    stream_ << "\"" << key << "\": ";
-    state_ = kExpectValue;
-    first_element_ = false;
-  }
-
-  void AddValue(const char* value) {
-    assert(state_ == kExpectValue || state_ == kInArray);
-    if (state_ == kInArray && !first_element_) {
-      stream_ << ", ";
-    }
-    stream_ << "\"" << value << "\"";
-    if (state_ != kInArray) {
-      state_ = kExpectKey;
-    }
-    first_element_ = false;
-  }
-
-  template <typename T>
-  void AddValue(const T& value) {
-    assert(state_ == kExpectValue || state_ == kInArray);
-    if (state_ == kInArray && !first_element_) {
-      stream_ << ", ";
-    }
-    stream_ << value;
-    if (state_ != kInArray) {
-      state_ = kExpectKey;
-    }
-    first_element_ = false;
-  }
-
-  void StartArray() {
-    assert(state_ == kExpectValue);
-    state_ = kInArray;
-    in_array_ = true;
-    stream_ << "[";
-    first_element_ = true;
-  }
-
-  void EndArray() {
-    assert(state_ == kInArray);
-    state_ = kExpectKey;
-    in_array_ = false;
-    stream_ << "]";
-    first_element_ = false;
-  }
-
-  void StartObject() {
-    assert(state_ == kExpectValue);
-    state_ = kExpectKey;
-    stream_ << "{";
-    first_element_ = true;
-  }
-
-  void EndObject() {
-    assert(state_ == kExpectKey);
-    stream_ << "}";
-    first_element_ = false;
-  }
-
-  void StartArrayedObject() {
-    assert(state_ == kInArray && in_array_);
-    state_ = kExpectValue;
-    if (!first_element_) {
-      stream_ << ", ";
-    }
-    StartObject();
-  }
-
-  void EndArrayedObject() {
-    assert(in_array_);
-    EndObject();
-    state_ = kInArray;
-  }
-
-  std::string Get() const { return stream_.str(); }
-
-  JSONWriter& operator<<(const char* val) {
-    if (state_ == kExpectKey) {
-      AddKey(val);
-    } else {
-      AddValue(val);
-    }
-    return *this;
-  }
-
-  JSONWriter& operator<<(const std::string& val) {
-    return *this << val.c_str();
-  }
-
-  template <typename T>
-  JSONWriter& operator<<(const T& val) {
-    assert(state_ != kExpectKey);
-    AddValue(val);
-    return *this;
-  }
-
- private:
-  enum JSONWriterState {
-    kExpectKey,
-    kExpectValue,
-    kInArray,
-    kInArrayedObject,
-  };
-  JSONWriterState state_;
-  bool first_element_;
-  bool in_array_;
-  std::ostringstream stream_;
-};
-
-class EventLoggerStream {
- public:
-  template <typename T>
-  EventLoggerStream& operator<<(const T& val) {
-    MakeStream();
-    *json_writer_ << val;
-    return *this;
-  }
-
-  void StartArray() { json_writer_->StartArray(); }
-  void EndArray() { json_writer_->EndArray(); }
-  void StartObject() { json_writer_->StartObject(); }
-  void EndObject() { json_writer_->EndObject(); }
-
-  ~EventLoggerStream();
-
- private:
-  void MakeStream() {
-    if (!json_writer_) {
-      json_writer_ = new JSONWriter();
-      *this << "time_micros"
-            << std::chrono::duration_cast<std::chrono::microseconds>(
-                   std::chrono::system_clock::now().time_since_epoch()).count();
-    }
-  }
-  friend class EventLogger;
-  explicit EventLoggerStream(Logger* logger);
-  explicit EventLoggerStream(LogBuffer* log_buffer);
-  // exactly one is non-nullptr
-  Logger* const logger_;
-  LogBuffer* const log_buffer_;
-  // ownership
-  JSONWriter* json_writer_;
-};
-
-// here is an example of the output that will show up in the LOG:
-// 2015/01/15-14:13:25.788019 1105ef000 EVENT_LOG_v1 {"time_micros":
-// 1421360005788015, "event": "table_file_creation", "file_number": 12,
-// "file_size": 1909699}
-class EventLogger {
- public:
-  static const char* Prefix() {
-    return "EVENT_LOG_v1";
-  }
-
-  explicit EventLogger(Logger* logger) : logger_(logger) {}
-  EventLoggerStream Log() { return EventLoggerStream(logger_); }
-  EventLoggerStream LogToBuffer(LogBuffer* log_buffer) {
-    return EventLoggerStream(log_buffer);
-  }
-  void Log(const JSONWriter& jwriter);
-  static void Log(Logger* logger, const JSONWriter& jwriter);
-  static void LogToBuffer(LogBuffer* log_buffer, const JSONWriter& jwriter);
-
- private:
-  Logger* logger_;
-};
-
-}  // namespace rocksdb