summaryrefslogtreecommitdiff
path: root/src/vm/eventpipejsonfile.h
blob: b6e42def689dc7ba61d51f88230afb814ee3af0f (plain)
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
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.


#ifndef __EVENTPIPE_JSONFILE_H__
#define __EVENTPIPE_JSONFILE_H__

#include "common.h"
#include "eventpipe.h"
#include "fstream.h"

class EventPipeJsonFile
{
    public:
        EventPipeJsonFile(SString &outFilePath);
        ~EventPipeJsonFile();

        // Write an event with the specified message and stack.
        void WriteEvent(CommonEventFields &commonFields, SString &message, StackContents &stackContents);

    private:

        // Write a string to the file.
        void Write(SString &str);

        // Format the input callstack for printing.
        void FormatCallStack(StackContents &stackContents, SString &resultStr);

        // The output file stream.
        CFileStream *m_pFileStream;

        // Keep track of if an error has been encountered while writing.
        bool m_writeErrorEncountered;

        // File-open timestamp for use when calculating event timestamps.
        LARGE_INTEGER m_fileOpenTimeStamp;
};

#endif // __EVENTPIPE_JSONFILE_H__