aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/eventlog/event_field_output.h
blob: ed9db0ae167788280e2e837e24baf411efddd102 (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
#pragma once

#include <util/stream/output.h>
#include <util/generic/flags.h>

enum class EFieldOutputFlag {
    EscapeTab = 0x1,      // escape \t in field value
    EscapeNewLine = 0x2,  // escape \n in field value
    EscapeBackSlash = 0x4 // escape \ in field value
};

Y_DECLARE_FLAGS(EFieldOutputFlags, EFieldOutputFlag);
Y_DECLARE_OPERATORS_FOR_FLAGS(EFieldOutputFlags);

class TEventFieldOutput: public IOutputStream {
public:
    TEventFieldOutput(IOutputStream& output, EFieldOutputFlags flags);

    IOutputStream& GetOutputStream();
    EFieldOutputFlags GetFlags() const;

protected:
    void DoWrite(const void* buf, size_t len) override;

private:
    IOutputStream& Output;
    EFieldOutputFlags Flags;
    TString Separators;
};