MCPcopy
hub / github.com/livekit/livekit / CopySignalStreamToMessageChannel

Function CopySignalStreamToMessageChannel

pkg/routing/signal.go:191–223  ·  view source on GitHub ↗
(
	stream psrpc.Stream[SendType, RecvType],
	ch *MessageChannel,
	reader SignalMessageReader[RecvType],
	config config.SignalRelayConfig,
	promSignalSuccess func(),
	promSignalFailure func(),
)

Source from the content-addressed store, hash-verified

189}
190
191func CopySignalStreamToMessageChannel[SendType, RecvType RelaySignalMessage](
192 stream psrpc.Stream[SendType, RecvType],
193 ch *MessageChannel,
194 reader SignalMessageReader[RecvType],
195 config config.SignalRelayConfig,
196 promSignalSuccess func(),
197 promSignalFailure func(),
198) error {
199 r := &signalMessageReader[SendType, RecvType]{
200 reader: reader,
201 config: config,
202 }
203 for msg := range stream.Channel() {
204 res, err := r.Read(msg)
205 if err != nil {
206 promSignalFailure()
207 return err
208 }
209
210 for _, r := range res {
211 if err = ch.WriteMessage(r); err != nil {
212 promSignalFailure()
213 return err
214 }
215 promSignalSuccess()
216 }
217
218 if msg.GetClose() {
219 return stream.Close(nil)
220 }
221 }
222 return stream.Err()
223}
224
225// ----------------------------------------
226

Callers 2

RelaySignalMethod · 0.92

Calls 4

GetCloseMethod · 0.80
ReadMethod · 0.65
WriteMessageMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected