34 lines
611 B
Go
34 lines
611 B
Go
|
package bus
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
|
||
|
"github.com/pkg/errors"
|
||
|
)
|
||
|
|
||
|
type (
|
||
|
MessageNamespace string
|
||
|
)
|
||
|
|
||
|
type Message interface {
|
||
|
MessageNamespace() MessageNamespace
|
||
|
}
|
||
|
|
||
|
func NewMessageNamespace(namespaces ...MessageNamespace) MessageNamespace {
|
||
|
var sb strings.Builder
|
||
|
|
||
|
for i, ns := range namespaces {
|
||
|
if i != 0 {
|
||
|
if _, err := sb.WriteString(":"); err != nil {
|
||
|
panic(errors.Wrap(err, "could not build new message namespace"))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if _, err := sb.WriteString(string(ns)); err != nil {
|
||
|
panic(errors.Wrap(err, "could not build new message namespace"))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return MessageNamespace(sb.String())
|
||
|
}
|