messagelog: Use custom errors

master
Onion Ltd 4 years ago
parent c4566b07e2
commit e9406b88e9
Signed by: onionltd
GPG Key ID: E4B6CAC49B242A44

@ -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)
}

@ -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

@ -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
}

Loading…
Cancel
Save