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  }