@@ -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 {
6666func (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+
147169type LayerExtracting struct {
148170 layerBase
149171 duration * time.Duration
0 commit comments