18int startTask(
const std::vector<std::string>& vparams);
19int endTask(
const std::vector<std::string>& vparams);
22 *
new std::map<std::string, int (*)(
const std::vector<std::string>&)>{
25void split(
const std::string& str,
char delimiter,
26 std::vector<std::string>* vparams) {
27 std::string::size_type baseindex = 0;
28 std::string::size_type offindex = str.find(delimiter);
30 while (offindex != std::string::npos) {
31 (*vparams).push_back(str.substr(baseindex, offindex - baseindex));
32 baseindex = ++offindex;
33 offindex = str.find(delimiter, offindex);
35 if (offindex == std::string::npos)
36 (*vparams).push_back(str.substr(baseindex, str.length()));
40int startTask(
const std::vector<std::string>& vparams) {
43 if (
const char* domain_name = vparams[1].c_str()) {
44 if (
const char* task_name = vparams[2].c_str()) {
45 if (std::shared_ptr<VTuneDomain> domainptr =
46 VTuneDomain::createDomain(domain_name)) {
47 if (!domainptr->beginTask(task_name)) {
64int endTask(
const std::vector<std::string>& vparams) {
67 if (
const char* domain_name = vparams[1].c_str()) {
68 if (std::shared_ptr<VTuneDomain> domainptr =
69 VTuneDomain::createDomain(domain_name)) {
83 std::vector<std::string> vparams;
85 split(*(
new std::string(params)),
' ', &vparams);
89 (it->second)(vparams);
114 if (info.Length() != 3 || !info[0]->IsString() || !info[1]->IsString() ||
115 !info[2]->IsString()) {
116 info.GetIsolate()->ThrowError(
117 "Parameter number should be exactly three, first domain name"
118 "second task name, third start/end");
127 char* cdomainName = *domainName;
128 char* ctaskName = *taskName;
129 char* cstatName = *statName;
131 std::stringstream params;
132 params << cstatName <<
" " << cdomainName <<
" " << ctaskName;
136 info.GetIsolate()->ThrowError(
static Local< FunctionTemplate > New(Isolate *isolate, FunctionCallback callback=nullptr, Local< Value > data=Local< Value >(), Local< Signature > signature=Local< Signature >(), int length=0, ConstructorBehavior behavior=ConstructorBehavior::kAllow, SideEffectType side_effect_type=SideEffectType::kHasSideEffect, const CFunction *c_function=nullptr, uint16_t instance_type=0, uint16_t allowed_receiver_instance_type_range_start=0, uint16_t allowed_receiver_instance_type_range_end=0)
static V8_WARN_UNUSED_RESULT MaybeLocal< String > NewFromUtf8(Isolate *isolate, const char *data, NewStringType type=NewStringType::kNormal, int length=-1)
v8::Local< v8::FunctionTemplate > GetNativeFunctionTemplate(v8::Isolate *isolate, v8::Local< v8::String > name) override
static void Mark(const v8::FunctionCallbackInfo< v8::Value > &info)
const auto & function_map
int startTask(const std::vector< std::string > &vparams)
int endTask(const std::vector< std::string > &vparams)
void split(const std::string &str, char delimiter, std::vector< std::string > *vparams)
int invoke(const char *params)
#define TASK_BEGIN_FAILED
#define CREATE_DOMAIN_FAILED