#pragma once

#include "backend_creator.h"

#include <functional>

class TOwningThreadedLogBackendCreator: public ILogBackendCreator {
public:
    TOwningThreadedLogBackendCreator(THolder<ILogBackendCreator>&& slave);
    virtual bool Init(const IInitContext& ctx) override;
    virtual void ToJson(NJson::TJsonValue& value) const override;
    void SetQueueOverflowCallback(std::function<void()> callback);
    void SetQueueLen(size_t len);

private:
    virtual THolder<TLogBackend> DoCreateLogBackend() const override;
    THolder<ILogBackendCreator> Slave;
    std::function<void()> QueueOverflowCallback = {};
    size_t QueueLen = 0;
};