Send spans for state events

This commit is contained in:
David Baker 2023-03-16 18:08:28 +00:00
parent 31450219c8
commit 521b0a857a
2 changed files with 30 additions and 3 deletions

View file

@ -23,7 +23,7 @@ import { tracer } from "./otel";
/** /**
* Recursively sets the contents of a todevice event object as attributes on a span * Recursively sets the contents of a todevice event object as attributes on a span
*/ */
function setNestedAttributesFromToDeviceEvent(span: Span, event: VoipEvent) { function setNestedAttributesFromEvent(span: Span, event: VoipEvent) {
setSpanEventAttributesRecursive( setSpanEventAttributesRecursive(
span, span,
event as unknown as Record<string, unknown>, // XXX Types event as unknown as Record<string, unknown>, // XXX Types
@ -109,7 +109,23 @@ export class OTelGroupCallMembership {
if (this.callMembershipSpan) this.callMembershipSpan.end(); if (this.callMembershipSpan) this.callMembershipSpan.end();
} }
public onSendStateEvent(stateEvent: MatrixEvent) {} public onUpdateRoomState(event: MatrixEvent) {
if (
!event ||
(!event.getType().startsWith("m.call") &&
!event.getType().startsWith("org.matrix.msc3401.call"))
)
return;
const span = tracer.startSpan(
`otel_onRoomStateEvent_${event.getType()}`,
undefined,
this.context
);
setNestedAttributesFromEvent(span, event.getContent());
span.end();
}
public onSendEvent(event: VoipEvent) { public onSendEvent(event: VoipEvent) {
const eventType = event.eventType as string; const eventType = event.eventType as string;
@ -122,7 +138,16 @@ export class OTelGroupCallMembership {
this.context this.context
); );
setNestedAttributesFromToDeviceEvent(span, event); setNestedAttributesFromEvent(span, event);
span.end();
} else if (event.type === "sendEvent") {
const span = tracer.startSpan(
`otel_sendToRoomEvent_${event.eventType}`,
undefined,
this.context
);
setNestedAttributesFromEvent(span, event);
span.end(); span.end();
} }
} }

View file

@ -382,6 +382,8 @@ function useGroupCallState(
callStateEvent, callStateEvent,
memberStateEvents, memberStateEvents,
}); });
otelGroupCallMembership.onUpdateRoomState(event);
} }
function onReceivedVoipEvent(event: MatrixEvent) { function onReceivedVoipEvent(event: MatrixEvent) {