12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package libcontainer
- import (
- "io"
- "text/template"
- "time"
- "github.com/opencontainers/runc/libcontainer/stacktrace"
- )
- type syncType uint8
- const (
- procReady syncType = iota
- procError
- procRun
- procHooks
- procResume
- )
- type syncT struct {
- Type syncType `json:"type"`
- }
- var errorTemplate = template.Must(template.New("error").Parse(`Timestamp: {{.Timestamp}}
- Code: {{.ECode}}
- {{if .Message }}
- Message: {{.Message}}
- {{end}}
- Frames:{{range $i, $frame := .Stack.Frames}}
- ---
- {{$i}}: {{$frame.Function}}
- Package: {{$frame.Package}}
- File: {{$frame.File}}@{{$frame.Line}}{{end}}
- `))
- func newGenericError(err error, c ErrorCode) Error {
- if le, ok := err.(Error); ok {
- return le
- }
- gerr := &genericError{
- Timestamp: time.Now(),
- Err: err,
- ECode: c,
- Stack: stacktrace.Capture(1),
- }
- if err != nil {
- gerr.Message = err.Error()
- }
- return gerr
- }
- func newSystemError(err error) Error {
- if le, ok := err.(Error); ok {
- return le
- }
- gerr := &genericError{
- Timestamp: time.Now(),
- Err: err,
- ECode: SystemError,
- Stack: stacktrace.Capture(1),
- }
- if err != nil {
- gerr.Message = err.Error()
- }
- return gerr
- }
- type genericError struct {
- Timestamp time.Time
- ECode ErrorCode
- Err error `json:"-"`
- Message string
- Stack stacktrace.Stacktrace
- }
- func (e *genericError) Error() string {
- return e.Message
- }
- func (e *genericError) Code() ErrorCode {
- return e.ECode
- }
- func (e *genericError) Detail(w io.Writer) error {
- return errorTemplate.Execute(w, e)
- }
|