From e9406b88e94a8b59bc077af6db81d185bac06fb8 Mon Sep 17 00:00:00 2001 From: Onion Limited Date: Thu, 22 Oct 2020 17:49:10 +0000 Subject: [PATCH] messagelog: Use custom errors --- messagelog/errors.go | 12 ++++++++++++ messagelog/log.go | 5 ++--- messagelog/message.go | 6 ++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/messagelog/errors.go b/messagelog/errors.go index f987fc7..2c35838 100644 --- a/messagelog/errors.go +++ b/messagelog/errors.go @@ -1,7 +1,19 @@ package messagelog +import "fmt" + type ErrInvalidMessage struct { + message string +} + +func (err *ErrInvalidMessage) Error() string { + return fmt.Sprintf("invalid message format: %s", err.message) } type ErrTopicNotFound struct { + topic string +} + +func (err *ErrTopicNotFound) Error() string { + return fmt.Sprintf("topic `%s` not found", err.topic) } diff --git a/messagelog/log.go b/messagelog/log.go index f7447f0..594a5d0 100644 --- a/messagelog/log.go +++ b/messagelog/log.go @@ -1,7 +1,6 @@ package messagelog import ( - "errors" "sync" ) @@ -24,7 +23,7 @@ func (ml *Log) Push(topic string, message Message) error { defer ml.logLock.Unlock() log, ok := ml.log[topic] if !ok { - return errors.New("topic doesn't exist") + return &ErrTopicNotFound{topic: topic} } message.Index = len(log) ml.log[topic] = append(log, message) @@ -36,7 +35,7 @@ func (ml *Log) List(topic string, offset int) ([]Message, error) { defer ml.logLock.RUnlock() log, ok := ml.log[topic] if !ok { - return nil, errors.New("topic doesn't exist") + return nil, &ErrTopicNotFound{topic: topic} } if offset >= len(log) { return []Message{}, nil diff --git a/messagelog/message.go b/messagelog/message.go index 736464c..9c8e923 100644 --- a/messagelog/message.go +++ b/messagelog/message.go @@ -10,6 +10,8 @@ type Message struct { } func (m Message) validate() error { - // TODO: Use ErrInvalidMessage! - return validator.Validate(m) + if err := validator.Validate(m); err != nil { + return &ErrInvalidMessage{message: err.Error()} + } + return nil }