Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

36 lines
752 B

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package inmem
import "github.com/hashicorp/go-memdb"
type meta struct {
Key string
Value any
}
func incrementEventIndex(tx *memdb.Txn) (uint64, error) {
idx, err := currentEventIndex(tx)
if err != nil {
return 0, err
}
idx++
if err := tx.Insert(tableNameMetadata, meta{Key: metaKeyEventIndex, Value: idx}); err != nil {
return 0, nil
}
return idx, nil
}
func currentEventIndex(tx *memdb.Txn) (uint64, error) {
v, err := tx.First(tableNameMetadata, indexNameID, metaKeyEventIndex)
if err != nil {
return 0, err
}
if v == nil {
// 0 and 1 index are reserved for special use in the stream package.
return 2, nil
}
return v.(meta).Value.(uint64), nil
}