aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/tvmauth/src/logger.h
blob: 116025d0875db77c225667eaa9f854a19d9b7d8a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once

#include <library/cpp/tvmauth/client/logger.h>

#include <util/generic/vector.h>
#include <util/thread/lfqueue.h>

namespace NTvmAuthPy {
    class TPyLogger: public NTvmAuth::ILogger {
    public:
        using TMessage = std::pair<int, TString>;
        using TPyLoggerPtr = TIntrusivePtr<TPyLogger>;

        static TPyLoggerPtr Create() {
            return MakeIntrusive<TPyLogger>();
        }

        void Log(int lvl, const TString& msg) override {
            queue_.Enqueue(TMessage{lvl, msg});
        }

        static TVector<TMessage> FetchMessages(TPyLoggerPtr ptr) {
            TVector<TMessage> res;
            ptr->queue_.DequeueAll(&res);
            return res;
        }

    private:
        TLockFreeQueue<TMessage> queue_;
    };
}