summaryrefslogtreecommitdiff
path: root/src/vm/eventpipejsonfile.h
blob: 7686db7752f2ac0d03db00a61c66f71b80e5f1f6 (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
41
42
43
44
45
46
47
48
49
50
// 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__

#ifdef _DEBUG
#ifdef FEATURE_PERFTRACING

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

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

        // Write an event instance.
        void WriteEvent(EventPipeEventInstance &instance);

        // Write an event with the specified message and stack.
        void WriteEvent(LARGE_INTEGER timeStamp, DWORD threadID, 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 // FEATURE_PERFTRACING
#endif // _DEBUG

#endif // __EVENTPIPE_JSONFILE_H__