forked from thrasher-corp/gocryptotrader
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebsocketroutine_manager_types.go
36 lines (31 loc) · 1.3 KB
/
websocketroutine_manager_types.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
package engine
import (
"errors"
"sync"
"github.com/thrasher-corp/gocryptotrader/currency"
)
var (
errNilOrderManager = errors.New("nil order manager received")
errNilCurrencyPairSyncer = errors.New("nil currency pair syncer received")
errNilCurrencyConfig = errors.New("nil currency config received")
errNilCurrencyPairFormat = errors.New("nil currency pair format received")
errNilWebsocketDataHandlerFunction = errors.New("websocket data handler function is nil")
errNilWebsocket = errors.New("websocket is nil")
errRoutineManagerNotStarted = errors.New("websocket routine manager not started")
)
// websocketRoutineManager is used to process websocket updates from a unified location
type websocketRoutineManager struct {
started int32
verbose bool
exchangeManager iExchangeManager
orderManager iOrderManager
syncer iCurrencyPairSyncer
currencyConfig *currency.Config
shutdown chan struct{}
dataHandlers []WebsocketDataHandler
wg sync.WaitGroup
mu sync.RWMutex
}
// WebsocketDataHandler defines a function signature for a function that handles
// data coming from websocket connections.
type WebsocketDataHandler func(service string, incoming interface{}) error