ComponentKit/Analytics/CKSystraceScope.mm (28 lines of code) (raw):
/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*/
#import "CKSystraceScope.h"
#import <ComponentKit/CKGlobalConfig.h>
#import "CKAnalyticsListener.h"
#import "CKComponentScopeRoot.h"
#import "CKThreadLocalComponentScope.h"
CKSystraceScope::~CKSystraceScope()
{
if (_isAsync) {
[_systraceListener didEndAsyncBlockTrace:_blockName];
} else {
[_systraceListener didEndBlockTrace:_blockName];
}
}
CKSystraceScope::CKSystraceScope(const char *const blockName) noexcept : _blockName(blockName), _isAsync(false)
{
auto const systraceListener = CKReadGlobalConfig().defaultAnalyticsListener.systraceListener;
if (systraceListener)
{
[systraceListener willStartBlockTrace:blockName];
_systraceListener = systraceListener;
}
}
CKSystraceScope::CKSystraceScope(const CK::Analytics::AsyncBlock &asyncBlock) noexcept : _blockName(asyncBlock.name), _systraceListener(CKReadGlobalConfig().defaultAnalyticsListener.systraceListener), _isAsync(true)
{
if (asyncBlock.didStartBlock != nullptr) {
asyncBlock.didStartBlock();
}
}