MCPcopy Index your code
hub / github.com/Effect-TS/effect / decodeMessages

Function decodeMessages

packages/cluster/src/MessageStorage.ts:547–598  ·  view source on GitHub ↗
(
    envelopes: Array<{
      readonly envelope: Envelope.Envelope.Encoded
      readonly lastSentReply: Option.Option<Reply.ReplyEncoded<any>>
    }>
  )

Source from the content-addressed store, hash-verified

545 })
546
547 const decodeMessages = (
548 envelopes: Array<{
549 readonly envelope: Envelope.Envelope.Encoded
550 readonly lastSentReply: Option.Option<Reply.ReplyEncoded<any>>
551 }>
552 ) => {
553 const messages: Array<Message.Incoming<any>> = []
554 let index = 0
555
556 // if we have a malformed message, we should not return it and update
557 // the storage with a defect
558 const decodeMessage = Effect.catchAll(
559 Effect.suspend(() => {
560 const envelope = envelopes[index]
561 if (!envelope) return Effect.succeed(undefined)
562 return decodeEnvelopeWithReply(envelope)
563 }),
564 (error) => {
565 const envelope = envelopes[index]
566 return storage.saveReply(Reply.ReplyWithContext.fromDefect({
567 id: snowflakeGen.unsafeNext(),
568 requestId: Snowflake.Snowflake(envelope.envelope.requestId),
569 defect: error.toString()
570 })).pipe(
571 Effect.forkDaemon,
572 Effect.asVoid
573 )
574 }
575 )
576 return Effect.as(
577 Effect.whileLoop({
578 while: () => index < envelopes.length,
579 body: () => decodeMessage,
580 step: (message) => {
581 const envelope = envelopes[index++]
582 if (!message) return
583 messages.push(
584 message.envelope._tag === "Request"
585 ? new Message.IncomingRequest({
586 envelope: message.envelope,
587 lastSentReply: envelope.lastSentReply,
588 respond: storage.saveReply
589 })
590 : new Message.IncomingEnvelope({
591 envelope: message.envelope
592 })
593 )
594 }
595 }),
596 messages
597 )
598 }
599
600 const decodeReplies = (
601 messages: Map<string, Message.OutgoingRequest<any>>,

Callers 1

decodePromptFunction · 0.85

Calls 3

fromDefectMethod · 0.80
pipeMethod · 0.65
toStringMethod · 0.65

Tested by

no test coverage detected