/
message_writer.go
37 lines (30 loc) · 966 Bytes
/
message_writer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package endpoint
import (
"errors"
"github.com/skidder/streammarker-writer/config"
"github.com/skidder/streammarker-writer/db"
"github.com/skidder/streammarker-writer/msg"
"golang.org/x/net/context"
)
// MessageWriter provides functions for writing messages to storage
type MessageWriter interface {
Run(context.Context, interface{}) (interface{}, error)
}
type messageWriter struct {
measurementWriter db.MeasurementWriter
deviceManager db.DeviceManager
}
// NewMessageWriter creates a new healthcheck
func NewMessageWriter(c *config.Configuration) MessageWriter {
return &messageWriter{c.MeasurementWriter, c.DeviceManager}
}
func (h *messageWriter) Run(ctx context.Context, i interface{}) (interface{}, error) {
request, ok := i.(*msg.SensorReadingQueueMessage)
if !ok {
return nil, errors.New("Bad cast of request value")
}
if err := h.measurementWriter.WriteSensorReading(request); err != nil {
return nil, err
}
return nil, nil
}