github.com/Axway/agent-sdk@v1.1.101/pkg/agent/events/sequence.go (about)

     1  package events
     2  
     3  import (
     4  	agentcache "github.com/Axway/agent-sdk/pkg/agent/cache"
     5  )
     6  
     7  // SequenceProvider - Interface to provide event sequence ID to harvester client to fetch events
     8  type SequenceProvider interface {
     9  	GetSequence() int64
    10  	SetSequence(sequenceID int64)
    11  }
    12  
    13  // agentSequenceManager - represents the sequence manager for an agent
    14  type agentSequenceManager struct {
    15  	cacheManager   agentcache.Manager
    16  	watchTopicName string
    17  }
    18  
    19  // GetSequence - return the watch sequenceID
    20  func (s *agentSequenceManager) GetSequence() int64 {
    21  	return s.cacheManager.GetSequence(s.watchTopicName)
    22  }
    23  
    24  // SetSequence - updates the sequenceID in the cache
    25  func (s *agentSequenceManager) SetSequence(sequenceID int64) {
    26  	s.cacheManager.AddSequence(s.watchTopicName, sequenceID)
    27  }
    28  
    29  // NewSequenceProvider creates a new SequenceProvider
    30  func NewSequenceProvider(cacheManager agentcache.Manager, watchTopicName string) SequenceProvider {
    31  	return &agentSequenceManager{
    32  		cacheManager:   cacheManager,
    33  		watchTopicName: watchTopicName,
    34  	}
    35  }