github.com/status-im/status-go@v1.1.0/protocol/encryption/publisher/persistence.go (about) 1 package publisher 2 3 import ( 4 "encoding/hex" 5 "sync" 6 ) 7 8 type persistence struct { 9 lastAcksMutex sync.Mutex 10 lastPublished int64 11 lastAcks map[string]int64 12 } 13 14 func newPersistence() *persistence { 15 return &persistence{ 16 lastAcks: make(map[string]int64), 17 } 18 } 19 20 func (s *persistence) getLastPublished() int64 { 21 return s.lastPublished 22 } 23 24 func (s *persistence) setLastPublished(lastPublished int64) { 25 s.lastPublished = lastPublished 26 } 27 28 func (s *persistence) lastAck(identity []byte) int64 { 29 s.lastAcksMutex.Lock() 30 defer s.lastAcksMutex.Unlock() 31 return s.lastAcks[hex.EncodeToString(identity)] 32 } 33 34 func (s *persistence) setLastAck(identity []byte, lastAck int64) { 35 s.lastAcksMutex.Lock() 36 defer s.lastAcksMutex.Unlock() 37 s.lastAcks[hex.EncodeToString(identity)] = lastAck 38 }