Skip to content

Commit 5433cc1

Browse files
committed
feat: introduce experimental already-downloaded state
1 parent e0879f9 commit 5433cc1

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

pkg/client/pull/state/layer.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func (l *LayerPullingFSLayer) Next(event events.LayerEvent) (Layer, error) {
4848
case *events.DownloadComplete:
4949
return &LayerDownloadComplete{l.layerBase}, nil
5050
case *events.AlreadyExists:
51-
return &LayerAlreadyExists{l.layerBase}, nil
51+
return &LayerAlreadyDownloaded{l.layerBase}, nil
5252
case *events.LayerError:
5353
return &LayerErrored{l.layerBase, event.Error}, nil
5454
}
@@ -66,7 +66,7 @@ func (l *LayerWaiting) Status() string {
6666
func (l *LayerWaiting) Next(event events.LayerEvent) (Layer, error) {
6767
switch event := event.(type) {
6868
case *events.AlreadyExists:
69-
return &LayerAlreadyExists{l.layerBase}, nil
69+
return &LayerAlreadyDownloaded{l.layerBase}, nil
7070
case *events.Downloading:
7171
return &LayerDownloading{l.layerBase, event.Progress()}, nil
7272
case *events.DownloadComplete:
@@ -144,6 +144,28 @@ func (l *LayerDownloadComplete) Next(event events.LayerEvent) (Layer, error) {
144144
return nil, fmt.Errorf("invalid transition (download-complete + %T)", event)
145145
}
146146

147+
type LayerAlreadyDownloaded struct {
148+
layerBase
149+
}
150+
151+
func (l *LayerAlreadyDownloaded) Status() string {
152+
return "Already downloaded"
153+
}
154+
155+
func (l *LayerAlreadyDownloaded) Next(event events.LayerEvent) (Layer, error) {
156+
switch event := event.(type) {
157+
case *events.Extracting:
158+
return parseLayerExtracting(l.layerBase, event), nil
159+
case *events.LayerError:
160+
return &LayerErrored{layerBase{event.LayerId()}, event.Error}, nil
161+
case *events.PullComplete:
162+
return &LayerPullComplete{l.layerBase}, nil
163+
case *events.AlreadyExists:
164+
return &LayerAlreadyExists{l.layerBase}, nil
165+
}
166+
return nil, fmt.Errorf("invalid transition (already-downloaded + %T)", event)
167+
}
168+
147169
type LayerExtracting struct {
148170
layerBase
149171
duration *time.Duration

0 commit comments

Comments
 (0)