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

Function handlePort

packages/platform-browser/src/internal/workerRunner.ts:91–116  ·  view source on GitHub ↗
(port: MessagePort)

Source from the content-addressed store, hash-verified

89 )
90 }
91 function handlePort(port: MessagePort) {
92 const fiber = Scope.fork(scope, ExecStrategy.sequential).pipe(
93 Effect.flatMap((scope) => {
94 const portId = currentPortId++
95 ports.set(portId, [port, scope])
96 const onMsg = onMessage(portId)
97 port.addEventListener("message", onMsg)
98 port.addEventListener("messageerror", onMessageError)
99 if ("start" in port) {
100 port.start()
101 }
102 port.postMessage([0])
103 return Scope.addFinalizer(
104 scope,
105 Effect.sync(() => {
106 port.removeEventListener("message", onMsg)
107 port.removeEventListener("messageerror", onError)
108 port.close()
109 })
110 )
111 }),
112 runFork
113 )
114 fiber.addObserver(onExit)
115 FiberSet.unsafeAdd(fiberSet, fiber)
116 }
117 self.addEventListener("error", onError)
118 let prevOnConnect: unknown | undefined
119 if ("onconnect" in self) {

Callers 1

makeFunction · 0.85

Calls 11

addEventListenerMethod · 0.80
startMethod · 0.80
syncMethod · 0.80
removeEventListenerMethod · 0.80
onMessageFunction · 0.70
pipeMethod · 0.65
forkMethod · 0.65
setMethod · 0.65
addFinalizerMethod · 0.65
closeMethod · 0.65
addObserverMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…