Add the RunShutdowner actor interface

This commit is contained in:
Sasha Koshka 2025-01-30 15:53:33 -05:00
parent e1ccb4d6e8
commit bbe833bb53

View File

@ -88,3 +88,23 @@ type Resettable interface {
// invalid and any process which depends on it should be shut down.
Reset(ctx context.Context) error
}
// RunShutdownable is any object that needs a context in order to shut down.
// Actors which implement this interface cannot implement the Runnable
// interface. This can be used to run an http.Server as an actor.
type RunShutdownable interface {
// Run is similar to [Runnable.Run], but takes no context and blocks
// until Shutdown has run and exited. It may also return when something
// goes wrong and it cannot continue, in which case it must return a
// non-nil error explaining why. Shutdown does not need to be called in
// the latter case.
Run() error
// Shutdown shuts down the actor. It must be called while Run is
// running, and it must unblock Run even if it fails, the context
// expires, it returns an error, etc. Shutdown must return when or
// before the context expires, and must return ctx.Err if there is no
// other error to be returned. If Shutdown returns any error, the object
// must be treated as invalid and any other process which depends on it
// should be shut down.
Shutdown(ctx context.Context) error
}