mirror of
https://github.com/eosswedenorg/thalos
synced 2026-07-02 11:43:40 +02:00
api/client.go: add handler for table delta
This commit is contained in:
parent
9143c1e06b
commit
e7ad37c38a
1 changed files with 18 additions and 3 deletions
|
|
@ -20,6 +20,7 @@ type Client struct {
|
||||||
OnError func(error)
|
OnError func(error)
|
||||||
OnAction func(message.ActionTrace)
|
OnAction func(message.ActionTrace)
|
||||||
OnHeartbeat func(message.HeartBeat)
|
OnHeartbeat func(message.HeartBeat)
|
||||||
|
OnTableDelta func(message.TableDelta)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewClient(reader Reader, decoder message.Decoder) *Client {
|
func NewClient(reader Reader, decoder message.Decoder) *Client {
|
||||||
|
|
@ -55,6 +56,18 @@ func (c *Client) actHandler(payload []byte) {
|
||||||
c.OnAction(act)
|
c.OnAction(act)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TableDelta handler
|
||||||
|
func (c *Client) tableDeltaHandler(payload []byte) {
|
||||||
|
td := message.TableDelta{}
|
||||||
|
if err := c.decoder(payload, &td); err != nil {
|
||||||
|
if c.OnError != nil {
|
||||||
|
c.OnError(err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.OnTableDelta(td)
|
||||||
|
}
|
||||||
|
|
||||||
// HeartBeat handler
|
// HeartBeat handler
|
||||||
func (c *Client) hbHandler(payload []byte) {
|
func (c *Client) hbHandler(payload []byte) {
|
||||||
var hb message.HeartBeat
|
var hb message.HeartBeat
|
||||||
|
|
@ -75,6 +88,8 @@ func (c *Client) Subscribe(channel Channel) error {
|
||||||
handler = c.hbHandler
|
handler = c.hbHandler
|
||||||
case ActionChannel{}.Channel().Type():
|
case ActionChannel{}.Channel().Type():
|
||||||
handler = c.actHandler
|
handler = c.actHandler
|
||||||
|
case TableDeltaChannel{}.Channel().Type():
|
||||||
|
handler = c.tableDeltaHandler
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("invalid channel type. %s", t)
|
return fmt.Errorf("invalid channel type. %s", t)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue