MCPcopy Create free account
hub / github.com/dagger/dagger / ResolveSessionSocket

Function ResolveSessionSocket

core/socket.go:94–125  ·  view source on GitHub ↗

nolint:dupl // symmetric with resolveSessionSecret; sharing hides Socket vs Secret semantics

(ctx context.Context, socket *Socket)

Source from the content-addressed store, hash-verified

92
93//nolint:dupl // symmetric with resolveSessionSecret; sharing hides Socket vs Secret semantics
94func ResolveSessionSocket(ctx context.Context, socket *Socket) (*Socket, error) {
95 if socket == nil {
96 return nil, nil
97 }
98 if socket.Handle == "" {
99 return socket, nil
100 }
101
102 clientMetadata, err := engine.ClientMetadataFromContext(ctx)
103 if err != nil {
104 return nil, fmt.Errorf("resolve session socket %q: current client metadata: %w", socket.Handle, err)
105 }
106 if clientMetadata.SessionID == "" {
107 return nil, fmt.Errorf("resolve session socket %q: empty session ID", socket.Handle)
108 }
109 cache, err := dagql.EngineCache(ctx)
110 if err != nil {
111 return nil, fmt.Errorf("resolve session socket %q: current dagql cache: %w", socket.Handle, err)
112 }
113 resolvedAny, err := cache.ResolveSessionResource(ctx, clientMetadata.SessionID, clientMetadata.ClientID, socket.Handle)
114 if err != nil {
115 return nil, err
116 }
117 resolved, ok := resolvedAny.(*Socket)
118 if !ok {
119 return nil, fmt.Errorf("resolve session socket %q: bound value is %T", socket.Handle, resolvedAny)
120 }
121 if resolved.Handle != "" {
122 return nil, fmt.Errorf("resolve session socket %q: bound socket is still a handle", socket.Handle)
123 }
124 return resolved, nil
125}
126
127func (socket *Socket) URL(ctx context.Context) (string, error) {
128 resolved, err := ResolveSessionSocket(ctx, socket)

Callers 3

sshAuthSocketMethod · 0.92
URLMethod · 0.85
PortForwardMethod · 0.85

Calls 3

EngineCacheFunction · 0.92

Tested by

no test coverage detected