| 115 | } |
| 116 | |
| 117 | func (r *Resolver) ResolveState(ctx context.Context, st llb.State) (gwclient.Reference, error) { |
| 118 | mr, err := r.open(ctx) |
| 119 | if err != nil { |
| 120 | return nil, err |
| 121 | } |
| 122 | |
| 123 | def, err := st.Marshal(ctx) |
| 124 | if err != nil { |
| 125 | return nil, err |
| 126 | } |
| 127 | |
| 128 | res, err := mr.Solve(ctx, gwclient.SolveRequest{ |
| 129 | Definition: def.ToPB(), |
| 130 | }) |
| 131 | if err != nil { |
| 132 | return nil, err |
| 133 | } |
| 134 | |
| 135 | ref, err := res.SingleRef() |
| 136 | if err != nil { |
| 137 | return nil, err |
| 138 | } |
| 139 | return ref, nil |
| 140 | } |
| 141 | |
| 142 | func (r *Resolver) Close() error { |
| 143 | r.closeOnce.Do(func() { |