MCPcopy Create free account
hub / github.com/codnect/procyon / createSingleton

Method createSingleton

component/container.go:529–548  ·  view source on GitHub ↗

createSingleton constructs a singleton instance and registers it in the container. It also handles circular dependency protection via preparation state.

(ctx context.Context, def *Definition)

Source from the content-addressed store, hash-verified

527// createSingleton constructs a singleton instance and registers it in the container.
528// It also handles circular dependency protection via preparation state.
529func (d *DefaultContainer) createSingleton(ctx context.Context, def *Definition) (any, error) {
530 name := def.Name()
531
532 defer d.singletonState.removeFromPreparation(name)
533 if err := d.singletonState.putToPreparation(name); err != nil {
534 return nil, err
535 }
536
537 instance, err := d.createInstance(ctx, def)
538 if err != nil {
539 return nil, err
540 }
541
542 err = d.RegisterSingleton(name, instance)
543 if err != nil {
544 return nil, err
545 }
546
547 return instance, nil
548}
549
550// resolveArguments resolves the constructor arguments required to instantiate a component.
551func (d *DefaultContainer) resolveArguments(ctx context.Context, args []Arg) ([]any, error) {

Callers 1

ResolveMethod · 0.95

Calls 5

createInstanceMethod · 0.95
RegisterSingletonMethod · 0.95
removeFromPreparationMethod · 0.80
putToPreparationMethod · 0.80
NameMethod · 0.65

Tested by

no test coverage detected