MCPcopy
hub / github.com/Effect-TS/effect / write

Function write

packages/rpc/src/RpcClient.ts:544–581  ·  view source on GitHub ↗
(message: FromServer<Rpcs>)

Source from the content-addressed store, hash-verified

542 })
543
544 const write = (message: FromServer<Rpcs>): Effect.Effect<void> => {
545 switch (message._tag) {
546 case "Chunk": {
547 const requestId = message.requestId
548 const entry = entries.get(requestId)
549 if (!entry || entry._tag !== "Mailbox") return Effect.void
550 return entry.mailbox.offerAll(message.values).pipe(
551 supportsAck
552 ? Effect.zipRight(
553 options.onFromClient({
554 message: { _tag: "Ack", requestId: message.requestId },
555 context: entry.context,
556 discard: false
557 })
558 )
559 : identity,
560 Effect.catchAllCause((cause) => entry.mailbox.done(Exit.failCause(cause)))
561 )
562 }
563 case "Exit": {
564 const requestId = message.requestId
565 const entry = entries.get(requestId)
566 if (!entry) return Effect.void
567 entries.delete(requestId)
568 if (entry._tag === "Effect") {
569 entry.resume(message.exit)
570 return Effect.void
571 }
572 return entry.mailbox.done(Exit.asVoid(message.exit))
573 }
574 case "Defect": {
575 return clearEntries(Exit.die(message.defect))
576 }
577 case "ClientEnd": {
578 return Effect.void
579 }
580 }
581 }
582
583 let client: any
584 if (options.flatten) {

Callers 3

RpcClient.tsFile · 0.70
makeProtocolSocketFunction · 0.70
sendFunction · 0.70

Calls 8

onFromClientMethod · 0.80
failCauseMethod · 0.80
resumeMethod · 0.80
getMethod · 0.65
pipeMethod · 0.65
offerAllMethod · 0.65
doneMethod · 0.65
dieMethod · 0.65

Tested by

no test coverage detected