Skip to content

Commit 5ad4164

Browse files
committed
fixup! src: add C++ support for diagnostics channels
1 parent 7b468bb commit 5ad4164

3 files changed

Lines changed: 38 additions & 49 deletions

File tree

src/node_diagnostics_channel.cc

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@ BindingData::BindingData(Realm* realm,
2525
Local<Object> wrap,
2626
InternalFieldInfo* info)
2727
: SnapshotableObject(realm, wrap, type_int),
28-
subscribers_(realm->isolate(),
29-
kMaxChannels,
30-
MAYBE_FIELD_PTR(info, subscribers)) {
28+
subscribers_(
29+
realm->isolate(), kMaxChannels, MAYBE_FIELD_PTR(info, subscribers)) {
3130
if (info == nullptr) {
3231
wrap->Set(realm->context(),
3332
FIXED_ONE_BYTE_STRING(realm->isolate(), "subscribers"),
@@ -67,8 +66,7 @@ void BindingData::GetOrCreateChannelIndex(
6766
args.GetReturnValue().Set(index);
6867
}
6968

70-
void BindingData::SetPublishCallback(
71-
const FunctionCallbackInfo<Value>& args) {
69+
void BindingData::SetPublishCallback(const FunctionCallbackInfo<Value>& args) {
7270
Realm* realm = Realm::GetCurrent(args);
7371
BindingData* binding = realm->GetBindingData<BindingData>();
7472
CHECK_NOT_NULL(binding);
@@ -82,8 +80,7 @@ bool BindingData::PrepareForSerialization(Local<Context> context,
8280
SnapshotCreator* creator) {
8381
DCHECK_NULL(internal_field_info_);
8482
internal_field_info_ = InternalFieldInfoBase::New<InternalFieldInfo>(type());
85-
internal_field_info_->subscribers =
86-
subscribers_.Serialize(context, creator);
83+
internal_field_info_->subscribers = subscribers_.Serialize(context, creator);
8784
publish_callback_.Reset();
8885
return true;
8986
}
@@ -153,8 +150,7 @@ void Channel::Publish(Environment* env, Local<Value> message) const {
153150

154151
if (binding_data_->publish_callback_.IsEmpty()) return;
155152

156-
Local<v8::Function> callback =
157-
binding_data_->publish_callback_.Get(isolate);
153+
Local<v8::Function> callback = binding_data_->publish_callback_.Get(isolate);
158154
Local<String> channel_name =
159155
String::NewFromUtf8(isolate, name_).ToLocalChecked();
160156

src/node_diagnostics_channel.h

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,13 @@ class BindingData : public SnapshotableObject {
4949
static void SetPublishCallback(
5050
const v8::FunctionCallbackInfo<v8::Value>& args);
5151

52-
static void CreatePerIsolateProperties(
53-
IsolateData* isolate_data,
54-
v8::Local<v8::ObjectTemplate> target);
55-
static void CreatePerContextProperties(
56-
v8::Local<v8::Object> target,
57-
v8::Local<v8::Value> unused,
58-
v8::Local<v8::Context> context,
59-
void* priv);
60-
static void RegisterExternalReferences(
61-
ExternalReferenceRegistry* registry);
52+
static void CreatePerIsolateProperties(IsolateData* isolate_data,
53+
v8::Local<v8::ObjectTemplate> target);
54+
static void CreatePerContextProperties(v8::Local<v8::Object> target,
55+
v8::Local<v8::Value> unused,
56+
v8::Local<v8::Context> context,
57+
void* priv);
58+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
6259

6360
private:
6461
InternalFieldInfo* internal_field_info_ = nullptr;

test/cctest/test_diagnostics_channel.cc

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ static v8::Local<v8::Value> RunJS(v8::Isolate* isolate, const char* code) {
1111
v8::Local<v8::Context> context = isolate->GetCurrentContext();
1212
v8::Local<v8::Script> script =
1313
v8::Script::Compile(
14-
context,
15-
v8::String::NewFromUtf8(isolate, code).ToLocalChecked())
14+
context, v8::String::NewFromUtf8(isolate, code).ToLocalChecked())
1615
.ToLocalChecked();
1716
return script->Run(context).ToLocalChecked();
1817
}
@@ -29,9 +28,7 @@ TEST_F(DiagnosticsChannelTest, HasSubscribersReturnsFalseWithoutSubscribers) {
2928
});
3029

3130
// Load the environment to initialize bindings.
32-
node::LoadEnvironment(
33-
*env,
34-
"require('diagnostics_channel');");
31+
node::LoadEnvironment(*env, "require('diagnostics_channel');");
3532

3633
Channel ch = Channel::Get(*env, "test:cctest:no-subscribers");
3734
EXPECT_FALSE(ch.HasSubscribers());
@@ -48,10 +45,9 @@ TEST_F(DiagnosticsChannelTest, HasSubscribersReturnsTrueAfterSubscribe) {
4845
node::Stop(*env);
4946
});
5047

51-
node::LoadEnvironment(
52-
*env,
53-
"const dc = require('diagnostics_channel');"
54-
"dc.subscribe('test:cctest:with-sub', () => {});");
48+
node::LoadEnvironment(*env,
49+
"const dc = require('diagnostics_channel');"
50+
"dc.subscribe('test:cctest:with-sub', () => {});");
5551

5652
Channel ch = Channel::Get(*env, "test:cctest:with-sub");
5753
EXPECT_TRUE(ch.HasSubscribers());
@@ -68,10 +64,9 @@ TEST_F(DiagnosticsChannelTest, GetReturnsSameChannelState) {
6864
node::Stop(*env);
6965
});
7066

71-
node::LoadEnvironment(
72-
*env,
73-
"const dc = require('diagnostics_channel');"
74-
"dc.subscribe('test:cctest:same-channel', () => {});");
67+
node::LoadEnvironment(*env,
68+
"const dc = require('diagnostics_channel');"
69+
"dc.subscribe('test:cctest:same-channel', () => {});");
7570

7671
Channel ch1 = Channel::Get(*env, "test:cctest:same-channel");
7772
Channel ch2 = Channel::Get(*env, "test:cctest:same-channel");
@@ -108,7 +103,8 @@ TEST_F(DiagnosticsChannelTest, PublishDeliversToJSSubscribers) {
108103
v8::Local<v8::Object> msg = v8::Object::New(isolate_);
109104
msg->Set(context,
110105
v8::String::NewFromUtf8Literal(isolate_, "value"),
111-
v8::Integer::New(isolate_, 42)).Check();
106+
v8::Integer::New(isolate_, 42))
107+
.Check();
112108

113109
ch.Publish(*env, msg);
114110

@@ -133,9 +129,8 @@ TEST_F(DiagnosticsChannelTest, CppChannelVisibleFromJS) {
133129
});
134130

135131
// Expose dc on globalThis so RunJS (v8::Script) can access it.
136-
node::LoadEnvironment(
137-
*env,
138-
"globalThis.__dc = require('diagnostics_channel');");
132+
node::LoadEnvironment(*env,
133+
"globalThis.__dc = require('diagnostics_channel');");
139134

140135
Channel ch = Channel::Get(*env, "test:cctest:cpp-first");
141136
EXPECT_FALSE(ch.HasSubscribers());
@@ -156,7 +151,8 @@ TEST_F(DiagnosticsChannelTest, CppChannelVisibleFromJS) {
156151
v8::Local<v8::Object> msg = v8::Object::New(isolate_);
157152
msg->Set(context,
158153
v8::String::NewFromUtf8Literal(isolate_, "from"),
159-
v8::String::NewFromUtf8Literal(isolate_, "cpp")).Check();
154+
v8::String::NewFromUtf8Literal(isolate_, "cpp"))
155+
.Check();
160156

161157
ch.Publish(*env, msg);
162158

@@ -186,14 +182,13 @@ TEST_F(DiagnosticsChannelTest, JSChannelVisibleFromCpp) {
186182
node::Stop(*env);
187183
});
188184

189-
node::LoadEnvironment(
190-
*env,
191-
"const dc = require('diagnostics_channel');"
192-
"globalThis.__dc = dc;"
193-
"globalThis.__jsFirstMessages = [];"
194-
"dc.subscribe('test:cctest:js-first', (msg) => {"
195-
" globalThis.__jsFirstMessages.push(msg);"
196-
"});");
185+
node::LoadEnvironment(*env,
186+
"const dc = require('diagnostics_channel');"
187+
"globalThis.__dc = dc;"
188+
"globalThis.__jsFirstMessages = [];"
189+
"dc.subscribe('test:cctest:js-first', (msg) => {"
190+
" globalThis.__jsFirstMessages.push(msg);"
191+
"});");
197192

198193
v8::Local<v8::Context> context = (*env)->context();
199194

@@ -204,20 +199,21 @@ TEST_F(DiagnosticsChannelTest, JSChannelVisibleFromCpp) {
204199
v8::Local<v8::Object> msg1 = v8::Object::New(isolate_);
205200
msg1->Set(context,
206201
v8::String::NewFromUtf8Literal(isolate_, "seq"),
207-
v8::Integer::New(isolate_, 1)).Check();
202+
v8::Integer::New(isolate_, 1))
203+
.Check();
208204
ch.Publish(*env, msg1);
209205

210206
v8::Local<v8::Object> msg2 = v8::Object::New(isolate_);
211207
msg2->Set(context,
212208
v8::String::NewFromUtf8Literal(isolate_, "seq"),
213-
v8::Integer::New(isolate_, 2)).Check();
209+
v8::Integer::New(isolate_, 2))
210+
.Check();
214211
ch.Publish(*env, msg2);
215212

216213
v8::Local<v8::Value> msgs_val =
217214
context->Global()
218215
->Get(context,
219-
v8::String::NewFromUtf8Literal(isolate_,
220-
"__jsFirstMessages"))
216+
v8::String::NewFromUtf8Literal(isolate_, "__jsFirstMessages"))
221217
.ToLocalChecked();
222218
ASSERT_TRUE(msgs_val->IsArray());
223219
v8::Local<v8::Array> msgs = msgs_val.As<v8::Array>();

0 commit comments

Comments
 (0)