diff --git a/status/details.go b/status/details.go new file mode 100644 index 0000000..5b8f460 --- /dev/null +++ b/status/details.go @@ -0,0 +1,8 @@ +package status + +// details for WrongMagicNumber code. +const ( + // DetailIDCorrectMagic is an identifier of details with correct network magic + // which can be attached to WrongMagicNumber code. + DetailIDCorrectMagic = iota +) diff --git a/status/status.go b/status/status.go index d24ce57..4b1f370 100644 --- a/status/status.go +++ b/status/status.go @@ -57,6 +57,8 @@ const ( const ( // Internal is a local Code value for INTERNAL failure status. Internal Code = iota + // WrongMagicNumber is a local Code value for WRONG_MAGIC_NUMBER failure status. + WrongMagicNumber ) const ( diff --git a/status/test/generate.go b/status/test/generate.go index c8b5a66..1861212 100644 --- a/status/test/generate.go +++ b/status/test/generate.go @@ -37,7 +37,7 @@ func Status(empty bool) *status.Status { if !empty { m.SetCode(765) m.SetMessage("some string") - m.SetDetails(Details(false)) + status.SetStatusDetails(m, Details(false)) } return m diff --git a/status/types.go b/status/types.go index 3e907d8..61a05d0 100644 --- a/status/types.go +++ b/status/types.go @@ -106,9 +106,22 @@ func (x *Status) IterateDetails(f func(*Detail) bool) { } } -// SetDetails sets Detail list of the Status. -func (x *Status) SetDetails(v []*Detail) { +// ResetDetails empties the detail list. +func (x *Status) ResetDetails() { if x != nil { - x.details = v + x.details = x.details[:0] } } + +// AppendDetails appends the list of details to the Status. +func (x *Status) AppendDetails(ds ...*Detail) { + if x != nil { + x.details = append(x.details, ds...) + } +} + +// SetStatusDetails sets Detail list of the Status. +func SetStatusDetails(dst *Status, ds []*Detail) { + dst.ResetDetails() + dst.AppendDetails(ds...) +}