A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/nodejs/node/commit/df5083e5f9 below:

expose getCategoryEnabledBuffer to use on node.http · nodejs/node@df5083e · GitHub

File tree Expand file treeCollapse file tree 3 files changed

+74

-2

lines changed

Filter options

Expand file treeCollapse file tree 3 files changed

+74

-2

lines changed Original file line number Diff line number Diff line change

@@ -6,7 +6,7 @@ const {

6 6

} = primordials;

7 7 8 8

const { setUnrefTimeout } = require('internal/timers');

9 -

const { trace, isTraceCategoryEnabled } = internalBinding('trace_events');

9 +

const { getCategoryEnabledBuffer, trace } = internalBinding('trace_events');

10 10

const {

11 11

CHAR_LOWERCASE_B,

12 12

CHAR_LOWERCASE_E,

@@ -35,8 +35,10 @@ function getNextTraceEventId() {

35 35

return ++traceEventId;

36 36

}

37 37 38 +

const httpEnabled = getCategoryEnabledBuffer('node.http');

39 + 38 40

function isTraceHTTPEnabled() {

39 -

return isTraceCategoryEnabled('node.http');

41 +

return httpEnabled[0] > 0;

40 42

}

41 43 42 44

const traceEventCategory = 'node,node.http';

Original file line number Diff line number Diff line change

@@ -16,6 +16,8 @@ namespace node {

16 16

class ExternalReferenceRegistry;

17 17 18 18

using v8::Array;

19 +

using v8::ArrayBuffer;

20 +

using v8::BackingStore;

19 21

using v8::Context;

20 22

using v8::Function;

21 23

using v8::FunctionCallbackInfo;

@@ -25,6 +27,7 @@ using v8::Local;

25 27

using v8::NewStringType;

26 28

using v8::Object;

27 29

using v8::String;

30 +

using v8::Uint8Array;

28 31

using v8::Value;

29 32 30 33

class NodeCategorySet : public BaseObject {

@@ -120,6 +123,27 @@ static void SetTraceCategoryStateUpdateHandler(

120 123

env->set_trace_category_state_function(args[0].As<Function>());

121 124

}

122 125 126 +

static void GetCategoryEnabledBuffer(const FunctionCallbackInfo<Value>& args) {

127 +

CHECK(args[0]->IsString());

128 + 129 +

Isolate* isolate = args.GetIsolate();

130 +

node::Utf8Value category_name(isolate, args[0]);

131 + 132 +

const uint8_t* enabled_pointer =

133 +

TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(category_name.out());

134 +

uint8_t* enabled_pointer_cast = const_cast<uint8_t*>(enabled_pointer);

135 + 136 +

std::unique_ptr<BackingStore> bs = ArrayBuffer::NewBackingStore(

137 +

enabled_pointer_cast,

138 +

sizeof(*enabled_pointer_cast),

139 +

[](void*, size_t, void*) {},

140 +

nullptr);

141 +

auto ab = ArrayBuffer::New(isolate, std::move(bs));

142 +

v8::Local<Uint8Array> u8 = v8::Uint8Array::New(ab, 0, 1);

143 + 144 +

args.GetReturnValue().Set(u8);

145 +

}

146 + 123 147

void NodeCategorySet::Initialize(Local<Object> target,

124 148

Local<Value> unused,

125 149

Local<Context> context,

@@ -132,6 +156,8 @@ void NodeCategorySet::Initialize(Local<Object> target,

132 156

target,

133 157

"setTraceCategoryStateUpdateHandler",

134 158

SetTraceCategoryStateUpdateHandler);

159 +

SetMethod(

160 +

context, target, "getCategoryEnabledBuffer", GetCategoryEnabledBuffer);

135 161 136 162

Local<FunctionTemplate> category_set =

137 163

NewFunctionTemplate(isolate, NodeCategorySet::New);

@@ -160,6 +186,7 @@ void NodeCategorySet::RegisterExternalReferences(

160 186

ExternalReferenceRegistry* registry) {

161 187

registry->Register(GetEnabledCategories);

162 188

registry->Register(SetTraceCategoryStateUpdateHandler);

189 +

registry->Register(GetCategoryEnabledBuffer);

163 190

registry->Register(NodeCategorySet::New);

164 191

registry->Register(NodeCategorySet::Enable);

165 192

registry->Register(NodeCategorySet::Disable);

Original file line number Diff line number Diff line change

@@ -0,0 +1,43 @@

1 +

'use strict';

2 +

// Flags: --expose-internals

3 + 4 +

const common = require('../common');

5 +

const { it } = require('node:test');

6 + 7 +

try {

8 +

require('trace_events');

9 +

} catch {

10 +

common.skip('missing trace events');

11 +

}

12 + 13 +

const { createTracing, getEnabledCategories } = require('trace_events');

14 +

const assert = require('assert');

15 + 16 +

const binding = require('internal/test/binding');

17 +

const getCategoryEnabledBuffer = binding.internalBinding('trace_events').getCategoryEnabledBuffer;

18 + 19 +

it('should track enabled/disabled categories', () => {

20 +

const random = Math.random().toString().slice(2);

21 +

const category = `node.${random}`;

22 + 23 +

const buffer = getCategoryEnabledBuffer(category);

24 + 25 +

const tracing = createTracing({

26 +

categories: [category],

27 +

});

28 + 29 +

assert.ok(buffer[0] === 0, `the buffer[0] should start with value 0, got: ${buffer[0]}`);

30 + 31 +

tracing.enable();

32 + 33 +

let currentCategories = getEnabledCategories();

34 + 35 +

assert.ok(currentCategories.includes(category), `the getEnabledCategories should include ${category}, got: ${currentCategories}`);

36 +

assert.ok(buffer[0] > 0, `the buffer[0] should be greater than 0, got: ${buffer[0]}`);

37 + 38 +

tracing.disable();

39 + 40 +

currentCategories = getEnabledCategories();

41 +

assert.ok(currentCategories === undefined, `the getEnabledCategories should return undefined, got: ${currentCategories}`);

42 +

assert.ok(buffer[0] === 0, `the buffer[0] should be 0, got: ${buffer[0]}`);

43 +

});

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4