@@ -39,8 +39,8 @@ type State struct {
3939 Health * Health
4040 Removed bool `json:"-"`
4141
42- stopWaiters []chan <- StateStatus
43- removeOnlyWaiters []chan <- StateStatus
42+ stopWaiters []chan <- container. StateStatus
43+ removeOnlyWaiters []chan <- container. StateStatus
4444
4545 // The libcontainerd reference fields are unexported to force consumers
4646 // to access them through the getter methods with multi-valued returns
@@ -55,21 +55,9 @@ type State struct {
5555// Implements exec.ExitCode interface.
5656// This type is needed as State include a sync.Mutex field which make
5757// copying it unsafe.
58- type StateStatus struct {
59- exitCode int
60- err error
61- }
62-
63- // ExitCode returns current exitcode for the state.
64- func (s StateStatus ) ExitCode () int {
65- return s .exitCode
66- }
67-
68- // Err returns current error for the state. Returns nil if the container had
69- // exited on its own.
70- func (s StateStatus ) Err () error {
71- return s .err
72- }
58+ //
59+ // Deprecated: use [container.StateStatus] instead.
60+ type StateStatus = container.StateStatus
7361
7462// NewState creates a default state object.
7563func NewState () * State {
@@ -162,7 +150,9 @@ func IsValidStateString(s string) bool {
162150}
163151
164152// WaitCondition is an enum type for different states to wait for.
165- type WaitCondition int
153+ //
154+ // Deprecated: use [container.WaitCondition] instead.
155+ type WaitCondition = container.WaitCondition
166156
167157// Possible WaitCondition Values.
168158//
@@ -176,9 +166,12 @@ type WaitCondition int
176166//
177167// WaitConditionRemoved is used to wait for the container to be removed.
178168const (
179- WaitConditionNotRunning WaitCondition = iota
180- WaitConditionNextExit
181- WaitConditionRemoved
169+ // Deprecated: use [container.WaitConditionNotRunning] instead.
170+ WaitConditionNotRunning = container .WaitConditionNotRunning
171+ // Deprecated: use [container.WaitConditionNextExit] instead.
172+ WaitConditionNextExit = container .WaitConditionNextExit
173+ // Deprecated: use [container.WaitConditionRemoved] instead.
174+ WaitConditionRemoved = container .WaitConditionRemoved
182175)
183176
184177// Wait waits until the container is in a certain state indicated by the given
@@ -189,28 +182,25 @@ const (
189182// be nil and its ExitCode() method will return the container's exit code,
190183// otherwise, the results Err() method will return an error indicating why the
191184// wait operation failed.
192- func (s * State ) Wait (ctx context.Context , condition WaitCondition ) <- chan StateStatus {
185+ func (s * State ) Wait (ctx context.Context , condition WaitCondition ) <- chan container. StateStatus {
193186 s .Lock ()
194187 defer s .Unlock ()
195188
196189 // Buffer so we can put status and finish even nobody receives it.
197- resultC := make (chan StateStatus , 1 )
190+ resultC := make (chan container. StateStatus , 1 )
198191
199192 if s .conditionAlreadyMet (condition ) {
200- resultC <- StateStatus {
201- exitCode : s .ExitCode (),
202- err : s .Err (),
203- }
193+ resultC <- container .NewStateStatus (s .ExitCode (), s .Err ())
204194
205195 return resultC
206196 }
207197
208- waitC := make (chan StateStatus , 1 )
198+ waitC := make (chan container. StateStatus , 1 )
209199
210200 // Removal wakes up both removeOnlyWaiters and stopWaiters
211201 // Container could be removed while still in "created" state
212202 // in which case it is never actually stopped
213- if condition == WaitConditionRemoved {
203+ if condition == container . WaitConditionRemoved {
214204 s .removeOnlyWaiters = append (s .removeOnlyWaiters , waitC )
215205 } else {
216206 s .stopWaiters = append (s .stopWaiters , waitC )
@@ -220,10 +210,8 @@ func (s *State) Wait(ctx context.Context, condition WaitCondition) <-chan StateS
220210 select {
221211 case <- ctx .Done ():
222212 // Context timeout or cancellation.
223- resultC <- StateStatus {
224- exitCode : - 1 ,
225- err : ctx .Err (),
226- }
213+ resultC <- container .NewStateStatus (- 1 , ctx .Err ())
214+
227215 return
228216 case status := <- waitC :
229217 resultC <- status
@@ -233,11 +221,11 @@ func (s *State) Wait(ctx context.Context, condition WaitCondition) <-chan StateS
233221 return resultC
234222}
235223
236- func (s * State ) conditionAlreadyMet (condition WaitCondition ) bool {
224+ func (s * State ) conditionAlreadyMet (condition container. WaitCondition ) bool {
237225 switch condition {
238- case WaitConditionNotRunning :
226+ case container . WaitConditionNotRunning :
239227 return ! s .Running
240- case WaitConditionRemoved :
228+ case container . WaitConditionRemoved :
241229 return s .Removed
242230 default :
243231 // TODO(thaJeztah): how do we want to handle "WaitConditionNextExit"?
@@ -423,11 +411,8 @@ func (s *State) Err() error {
423411 return nil
424412}
425413
426- func (s * State ) notifyAndClear (waiters * []chan <- StateStatus ) {
427- result := StateStatus {
428- exitCode : s .ExitCodeValue ,
429- err : s .Err (),
430- }
414+ func (s * State ) notifyAndClear (waiters * []chan <- container.StateStatus ) {
415+ result := container .NewStateStatus (s .ExitCodeValue , s .Err ())
431416
432417 for _ , c := range * waiters {
433418 c <- result
0 commit comments