package docker import ( "fmt" "github.com/dotcloud/docker/utils" "sync" "time" ) type State struct { sync.Mutex Running bool Pid int ExitCode int StartedAt time.Time FinishedAt time.Time Ghost bool } // String returns a human-readable description of the state func (s *State) String() string { if s.Running { if s.Ghost { return fmt.Sprintf("Ghost") } return fmt.Sprintf("Up %s", utils.HumanDuration(time.Now().Sub(s.StartedAt))) } return fmt.Sprintf("Exit %d", s.ExitCode) } func (s *State) setRunning(pid int) { s.Running = true s.Ghost = false s.ExitCode = 0 s.Pid = pid s.StartedAt = time.Now() } func (s *State) setStopped(exitCode int) { s.Running = false s.Pid = 0 s.FinishedAt = time.Now() s.ExitCode = exitCode }