Skip to content

Commit c9597b3

Browse files
committed
Extract getEventType() helper in HibernatableWebSocketCustomEvent
1 parent 3ff2e07 commit c9597b3

File tree

2 files changed

+20
-23
lines changed

2 files changed

+20
-23
lines changed

src/workerd/api/hibernatable-web-socket.c++

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -184,54 +184,48 @@ HibernatableWebSocketCustomEvent::HibernatableWebSocketCustomEvent(
184184
params(kj::mv(params)),
185185
manager(manager) {}
186186

187-
// TODO(cleanup): Try to reduce duplication with consumeParams()
188-
kj::Maybe<tracing::EventInfo> HibernatableWebSocketCustomEvent::getEventInfo() const {
189-
// Try to extract event type from params if available
187+
tracing::HibernatableWebSocketEventInfo::Type HibernatableWebSocketCustomEvent::getEventType()
188+
const {
190189
KJ_SWITCH_ONEOF(params) {
191190
KJ_CASE_ONEOF(socketParams, HibernatableSocketParams) {
192191
KJ_SWITCH_ONEOF(socketParams.eventType) {
193-
KJ_CASE_ONEOF(text, HibernatableSocketParams::Text) {
194-
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(
195-
tracing::HibernatableWebSocketEventInfo::Message()));
192+
KJ_CASE_ONEOF(_, HibernatableSocketParams::Text) {
193+
return tracing::HibernatableWebSocketEventInfo::Message{};
196194
}
197-
KJ_CASE_ONEOF(data, HibernatableSocketParams::Data) {
198-
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(
199-
tracing::HibernatableWebSocketEventInfo::Message()));
195+
KJ_CASE_ONEOF(_, HibernatableSocketParams::Data) {
196+
return tracing::HibernatableWebSocketEventInfo::Message{};
200197
}
201198
KJ_CASE_ONEOF(close, HibernatableSocketParams::Close) {
202-
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(
203-
tracing::HibernatableWebSocketEventInfo::Close{close.code, close.wasClean}));
199+
return tracing::HibernatableWebSocketEventInfo::Close{close.code, close.wasClean};
204200
}
205-
KJ_CASE_ONEOF(error, HibernatableSocketParams::Error) {
206-
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(
207-
tracing::HibernatableWebSocketEventInfo::Error()));
201+
KJ_CASE_ONEOF(_, HibernatableSocketParams::Error) {
202+
return tracing::HibernatableWebSocketEventInfo::Error{};
208203
}
209204
}
210205
}
211206
KJ_CASE_ONEOF(reader, kj::Own<HibernationReader>) {
212-
// Parse the HibernationReader to determine the actual event type
213207
auto payload = reader->getMessage().getPayload();
214208
switch (payload.which()) {
215209
case rpc::HibernatableWebSocketEventMessage::Payload::TEXT:
216210
case rpc::HibernatableWebSocketEventMessage::Payload::DATA:
217-
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(
218-
tracing::HibernatableWebSocketEventInfo::Message()));
211+
return tracing::HibernatableWebSocketEventInfo::Message{};
219212
case rpc::HibernatableWebSocketEventMessage::Payload::CLOSE: {
220213
auto close = payload.getClose();
221-
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(
222-
tracing::HibernatableWebSocketEventInfo::Close{
223-
close.getCode(), close.getWasClean()}));
214+
return tracing::HibernatableWebSocketEventInfo::Close{
215+
close.getCode(), close.getWasClean()};
224216
}
225217
case rpc::HibernatableWebSocketEventMessage::Payload::ERROR:
226-
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(
227-
tracing::HibernatableWebSocketEventInfo::Error()));
218+
return tracing::HibernatableWebSocketEventInfo::Error{};
228219
}
229-
KJ_UNREACHABLE;
230220
}
231221
}
232222
KJ_UNREACHABLE;
233223
}
234224

225+
kj::Maybe<tracing::EventInfo> HibernatableWebSocketCustomEvent::getEventInfo() const {
226+
return tracing::EventInfo(tracing::HibernatableWebSocketEventInfo(getEventType()));
227+
}
228+
235229
HibernatableSocketParams HibernatableWebSocketCustomEvent::consumeParams() {
236230
KJ_IF_SOME(p, params.tryGet<kj::Own<HibernationReader>>()) {
237231
kj::Maybe<HibernatableSocketParams> eventParameters;

src/workerd/api/hibernatable-web-socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ class HibernatableWebSocketCustomEvent final: public WorkerInterface::CustomEven
8888
// HibernatableSocketParams first.
8989
HibernatableSocketParams consumeParams();
9090

91+
// Peeks at params to extract the event type for tracing, without consuming them.
92+
tracing::HibernatableWebSocketEventInfo::Type getEventType() const;
93+
9194
uint16_t typeId;
9295
kj::OneOf<HibernatableSocketParams, kj::Own<HibernationReader>> params;
9396
kj::Maybe<uint32_t> timeoutMs;

0 commit comments

Comments
 (0)