Program Listing for File dummy_sink.hpp

Return to documentation for file (/tmp/ws/src/data_tamer/data_tamer_cpp/include/data_tamer/sinks/dummy_sink.hpp)

#pragma once

#include "data_tamer/data_sink.hpp"
#include "data_tamer/details/mutex.hpp"

#include <unordered_map>
#include <mutex>

namespace DataTamer
{

class DummySink : public DataSinkBase
{
public:
  std::unordered_map<uint64_t, Schema> schemas;
  std::unordered_map<uint64_t, std::string> schema_names;
  std::unordered_map<uint64_t, long> snapshots_count;
  Snapshot latest_snapshot;
  Mutex schema_mutex_;

  ~DummySink() override { stopThread(); }

  void addChannel(std::string const& name, Schema const& schema) override
  {
    std::scoped_lock lk(schema_mutex_);
    schemas[schema.hash] = schema;
    schema_names[schema.hash] = name;
    snapshots_count[schema.hash] = 0;
  }

  bool storeSnapshot(const Snapshot& snapshot) override
  {
    std::scoped_lock lk(schema_mutex_);
    latest_snapshot = snapshot;

    auto it = snapshots_count.find(snapshot.schema_hash);
    if (it != snapshots_count.end())
    {
      it->second++;
    }
    return true;
  }
};

}   // namespace DataTamer