Skip to content
Snippets Groups Projects
Select Git revision
  • c213df42e3d9580760a43cd796cb53f5a7473578
  • release default protected
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • hotfix/TestHostPool_UpdateNdf_AddFilter
  • XX-4719/announcementChannels
  • xx-4717/logLevel
  • jonah/noob-channel
  • master protected
  • XX-4707/tagDiskJson
  • xx-4698/notification-retry
  • hotfix/notifylockup
  • syncNodes
  • hotfix/localCB
  • XX-4677/NewChanManagerMobile
  • XX-4689/DmSync
  • duplicatePrefix
  • XX-4601/HavenInvites
  • finalizedUICallbacks
  • XX-4673/AdminKeySync
  • debugNotifID
  • anne/test
  • v4.7.5
  • v4.7.4
  • v4.7.3
  • v4.7.2
  • v4.7.1
  • v4.6.3
  • v4.6.1
  • v4.5.0
  • v4.4.4
  • v4.3.11
  • v4.3.8
  • v4.3.7
  • v4.3.6
  • v4.3.5
  • v4.2.0
  • v4.3.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
41 results

commID.go

Blame
  • commID.go 1.08 KiB
    package ud
    
    import (
    	"encoding/binary"
    	jww "github.com/spf13/jwalterweatherman"
    	"gitlab.com/elixxir/client/storage/versioned"
    	"time"
    )
    
    const commIDKey = "commIDKey"
    const commIDVersion = 0
    
    // getCommID returns the ID for the next comm. IDs are generated sequentially.
    func (m *Manager) getCommID() uint64 {
    
    	m.commIDLock.Lock()
    	defer m.commIDLock.Unlock()
    	returnedID := m.commID
    
    	// Increment ID for next get
    	m.commID++
    
    	// Save ID storage
    	data := make([]byte, 8)
    	binary.BigEndian.PutUint64(data, m.commID)
    
    	obj := &versioned.Object{
    		Version:   commIDVersion,
    		Timestamp: time.Now(),
    		Data:      data,
    	}
    
    	if err := m.storage.Set(commIDKey, obj); err != nil {
    		jww.FATAL.Panicf("Failed to store the next commID: %+v", err)
    	}
    
    	return returnedID
    }
    
    // loadCommID retrieves the next comm ID from storage.
    func (m *Manager) loadCommID() {
    	m.commIDLock.Lock()
    	defer m.commIDLock.Unlock()
    
    	obj, err := m.storage.Get(commIDKey)
    	if err != nil {
    		jww.WARN.Printf("Failed to get the commID; restarting at zero: %+v", err)
    		return
    	}
    
    	m.commID = binary.BigEndian.Uint64(obj.Data)
    }