(Exchange Interface) Convert Fetch & Update orderbook/ticker methods to return pointers (#398)

* moved order and ticker fetching to return a pointer

* return nil instead of empty struct

* fixed incorrect nil

* general cleanup
This commit is contained in:
Andrew
2019-12-17 15:54:09 +11:00
committed by Adrian Gallagher
parent 44aa1e306c
commit 75ac5ee791
42 changed files with 320 additions and 348 deletions

View File

@@ -52,30 +52,30 @@ func SubscribeToExchangeTickers(exchange string) (dispatch.Pipe, error) {
}
// GetTicker checks and returns a requested ticker if it exists
func GetTicker(exchange string, p currency.Pair, tickerType asset.Item) (Price, error) {
func GetTicker(exchange string, p currency.Pair, tickerType asset.Item) (*Price, error) {
exchange = strings.ToLower(exchange)
service.RLock()
defer service.RUnlock()
if service.Tickers[exchange] == nil {
return Price{}, fmt.Errorf("no tickers for %s exchange", exchange)
return nil, fmt.Errorf("no tickers for %s exchange", exchange)
}
if service.Tickers[exchange][p.Base.Item] == nil {
return Price{}, fmt.Errorf("no tickers associated with base currency %s",
return nil, fmt.Errorf("no tickers associated with base currency %s",
p.Base)
}
if service.Tickers[exchange][p.Base.Item][p.Quote.Item] == nil {
return Price{}, fmt.Errorf("no tickers associated with quote currency %s",
return nil, fmt.Errorf("no tickers associated with quote currency %s",
p.Quote)
}
if service.Tickers[exchange][p.Base.Item][p.Quote.Item][tickerType] == nil {
return Price{}, fmt.Errorf("no tickers associated with asset type %s",
return nil, fmt.Errorf("no tickers associated with asset type %s",
tickerType)
}
return service.Tickers[exchange][p.Base.Item][p.Quote.Item][tickerType].Price, nil
return &service.Tickers[exchange][p.Base.Item][p.Quote.Item][tickerType].Price, nil
}
// ProcessTicker processes incoming tickers, creating or updating the Tickers

View File

@@ -219,11 +219,11 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers
if err != nil {
t.Fatal("ProcessTicker error", err)
}
result, err = GetTicker(exchName, newPair, asset.Spot)
_, err = GetTicker(exchName, newPair, asset.Spot)
if err != nil {
t.Fatal("TestProcessTicker failed to create and return a new ticker")
}
result, err = GetTicker(exchName, newPair, asset.Spot)
_, err = GetTicker(exchName, newPair, asset.Spot)
if err != nil {
t.Fatal("TestProcessTicker failed to return an existing ticker")
}
@@ -235,11 +235,11 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers
if err != nil {
t.Fatal("ProcessTicker error", err)
}
result, err = GetTicker(exchName, newPair, asset.Spot)
_, err = GetTicker(exchName, newPair, asset.Spot)
if err != nil {
t.Fatal("TestProcessTicker failed to create and return a new ticker")
}
result, err = GetTicker(exchName, newPair, asset.Spot)
_, err = GetTicker(exchName, newPair, asset.Spot)
if err != nil {
t.Fatal("TestProcessTicker failed to return an existing ticker")
}