MCPcopy Create free account
hub / github.com/effect-app/libs / FiberImpl

Class FiberImpl

repos/effect/packages/effect/src/internal/effect.ts:498–701  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

496 _E: identity
497}
498
499const fiberIdStore = { id: 0 }
500
501/** @internal */
502export const getCurrentFiber = (): Fiber.Fiber<any, any> | undefined => (globalThis as any)[currentFiberTypeId]
503
504/** @internal */
505export class FiberImpl<A = any, E = any> implements Fiber.Fiber<A, E> {
506 constructor(
507 context: Context.Context<never>,
508 interruptible: boolean = true
509 ) {
510 this[FiberTypeId] = fiberVariance as any
511 this.setContext(context)
512 this.id = ++fiberIdStore.id
513 this.currentOpCount = 0
514 this.interruptible = interruptible
515 this._stack = []
516 this._observers = []
517 this._exit = undefined
518 this._children = undefined
519 this._interruptedCause = undefined
520 this._yielded = undefined
521 this._running = false
522 this._deferredInterrupt = false
523 this.runtimeMetrics?.recordFiberStart(this.context)
524 }
525
526 readonly [FiberTypeId]: Fiber.Fiber.Variance<A, E>
527
528 readonly id: number
529 interruptible: boolean
530 currentOpCount: number
531 readonly _stack: Array<Primitive>
532 readonly _observers: Array<(exit: Exit.Exit<A, E>) => void>
533 _exit: Exit.Exit<A, E> | undefined
534 _children: Set<FiberImpl<any, any>> | undefined
535 _interruptedCause: Cause.Cause<never> | undefined
536 _yielded: Exit.Exit<any, any> | (() => void) | undefined
537 _running: boolean
538 _deferredInterrupt: boolean
539
540 // set in setContext
541 context!: Context.Context<never>
542 currentScheduler!: Scheduler.Scheduler
543 currentTracerContext: Tracer.Tracer["context"]
544 currentSpan: Tracer.AnySpan | undefined
545 currentLogLevel!: LogLevel.LogLevel
546 minimumLogLevel!: LogLevel.LogLevel
547 currentStackFrame: StackFrame | undefined
548 runtimeMetrics: Metric.FiberRuntimeMetricsService | undefined
549 maxOpsBeforeYield!: number
550 currentPreventYield!: boolean
551
552 _dispatcher: Scheduler.SchedulerDispatcher | undefined = undefined
553 get currentDispatcher(): Scheduler.SchedulerDispatcher {
554 return this._dispatcher ??= this.currentScheduler.makeDispatcher()
555 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…