Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • v0.2.6
  • v0.2.5
  • v0.2.3
  • v0.2.4
  • v0.2.2
  • v0.2.0
  • v0.0.26
  • v0.0.24
  • v0.0.23
  • v0.0.22
  • v0.0.25
  • v0.0.21
  • v0.1.4
  • v0.1.3
  • v0.1.2
  • v0.1.0
  • v0.1.1
  • v0.0.20
  • v0.0.19
  • v0.0.18
21 results

metadata.go

metadata.go 1.14 KiB
package binance

import (
	"sync"

	"gitlab.com/digitaldollar/ddnode/common"
)

type BinanceMetadata struct {
	AccountNumber int64
	SeqNumber     int64
	BlockHeight   int64
}

type BinanceMetaDataStore struct {
	lock  *sync.Mutex
	accts map[common.PubKey]BinanceMetadata
}

func NewBinanceMetaDataStore() *BinanceMetaDataStore {
	return &BinanceMetaDataStore{
		lock:  &sync.Mutex{},
		accts: make(map[common.PubKey]BinanceMetadata),
	}
}

func (b *BinanceMetaDataStore) Get(pk common.PubKey) BinanceMetadata {
	b.lock.Lock()
	defer b.lock.Unlock()
	if val, ok := b.accts[pk]; ok {
		return val
	}
	return BinanceMetadata{}
}

func (b *BinanceMetaDataStore) GetByAccount(acct int64) BinanceMetadata {
	b.lock.Lock()
	defer b.lock.Unlock()
	for _, meta := range b.accts {
		if meta.AccountNumber == acct {
			return meta
		}
	}
	return BinanceMetadata{}
}

func (b *BinanceMetaDataStore) Set(pk common.PubKey, meta BinanceMetadata) {
	b.lock.Lock()
	defer b.lock.Unlock()
	b.accts[pk] = meta
}

func (b *BinanceMetaDataStore) SeqInc(pk common.PubKey) {
	b.lock.Lock()
	defer b.lock.Unlock()
	if meta, ok := b.accts[pk]; ok {
		meta.SeqNumber += 1
		b.accts[pk] = meta
	}
}