diff options
Diffstat (limited to 'src/vm/eventpipeevent.cpp')
-rw-r--r-- | src/vm/eventpipeevent.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/vm/eventpipeevent.cpp b/src/vm/eventpipeevent.cpp new file mode 100644 index 0000000000..abf942b253 --- /dev/null +++ b/src/vm/eventpipeevent.cpp @@ -0,0 +1,120 @@ +// 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. + +#include "common.h" +#include "eventpipeevent.h" +#include "eventpipeprovider.h" + +#ifdef FEATURE_PERFTRACING + +EventPipeEvent::EventPipeEvent(EventPipeProvider &provider, INT64 keywords, unsigned int eventID, unsigned int eventVersion, EventPipeEventLevel level, bool needStack, BYTE *pMetadata, unsigned int metadataLength) +{ + CONTRACTL + { + THROWS; + GC_NOTRIGGER; + MODE_ANY; + } + CONTRACTL_END; + + m_pProvider = &provider; + m_keywords = keywords; + m_eventID = eventID; + m_eventVersion = eventVersion; + m_level = level; + m_needStack = needStack; + m_enabled = false; + if (pMetadata != NULL) + { + m_pMetadata = new BYTE[metadataLength]; + memcpy(m_pMetadata, pMetadata, metadataLength); + m_metadataLength = metadataLength; + } + else + { + m_pMetadata = NULL; + m_metadataLength = 0; + } +} + +EventPipeEvent::~EventPipeEvent() +{ + if (m_pMetadata != NULL) + { + delete[] m_pMetadata; + m_pMetadata = NULL; + } +} + +EventPipeProvider* EventPipeEvent::GetProvider() const +{ + LIMITED_METHOD_CONTRACT; + + return m_pProvider; +} + +INT64 EventPipeEvent::GetKeywords() const +{ + LIMITED_METHOD_CONTRACT; + + return m_keywords; +} + +unsigned int EventPipeEvent::GetEventID() const +{ + LIMITED_METHOD_CONTRACT; + + return m_eventID; +} + +unsigned int EventPipeEvent::GetEventVersion() const +{ + LIMITED_METHOD_CONTRACT; + + return m_eventVersion; +} + +EventPipeEventLevel EventPipeEvent::GetLevel() const +{ + LIMITED_METHOD_CONTRACT; + + return m_level; +} + +bool EventPipeEvent::NeedStack() const +{ + LIMITED_METHOD_CONTRACT; + + return m_needStack; +} + +bool EventPipeEvent::IsEnabled() const +{ + LIMITED_METHOD_CONTRACT; + + return m_enabled; +} + +BYTE *EventPipeEvent::GetMetadata() const +{ + LIMITED_METHOD_CONTRACT; + + return m_pMetadata; +} + +unsigned int EventPipeEvent::GetMetadataLength() const +{ + LIMITED_METHOD_CONTRACT; + + return m_metadataLength; +} + +void EventPipeEvent::RefreshState() +{ + LIMITED_METHOD_CONTRACT; + + m_enabled = m_pProvider->EventEnabled(m_keywords, m_level); +} + +#endif // FEATURE_PERFTRACING |