aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/eventlog/iterator.h
blob: 71a61ed5494054ad5cc3857d95c5383106922baa (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma once

#include <util/stream/input.h>
#include <util/generic/ptr.h>
#include <util/generic/string.h>
#include <util/generic/iterator.h>

#include "eventlog.h"
#include "logparser.h"

namespace NEventLog {
    struct TOptions {
        inline TOptions& SetFileName(const TString& fileName) {
            FileName = fileName;

            return *this;
        }

        inline TOptions& SetForceStrongOrdering(bool v) {
            if(!ForceLosslessStrongOrdering) {
                ForceStrongOrdering = v;
            }

            return *this;
        }

        ui64 StartTime = MIN_START_TIME;
        ui64 EndTime = MAX_END_TIME;
        ui64 MaxRequestDuration = MAX_REQUEST_DURATION;
        TString FileName;
        bool ForceStrongOrdering = false;
        bool ForceWeakOrdering = false;
        bool EnableEvents = true;
        TString EvList;
        bool ForceStreamMode = false;
        bool ForceLosslessStrongOrdering = false;
        bool TailFMode = false;
        IInputStream* Input = &Cin;
        IFrameFilterRef FrameFilter;
    };

    class IIterator: public TInputRangeAdaptor<IIterator> {
    public:
        virtual ~IIterator();

        virtual TConstEventPtr Next() = 0;
    };

    THolder<IIterator> CreateIterator(const TOptions& o);
    THolder<IIterator> CreateIterator(const TOptions& o, IEventFactory* fac);
}