本文整理汇总了Golang中github.com/cockroachdb/cockroach/util/encoding.DecodeUint64Ascending函数的典型用法代码示例。如果您正苦于以下问题:Golang DecodeUint64Ascending函数的具体用法?Golang DecodeUint64Ascending怎么用?Golang DecodeUint64Ascending使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DecodeUint64Ascending函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: raftLogKeyPrint
func raftLogKeyPrint(key roachpb.Key) string {
var logIndex uint64
var err error
key, logIndex, err = encoding.DecodeUint64Ascending(key)
if err != nil {
return fmt.Sprintf("/err<%v:%q>", err, []byte(key))
}
return fmt.Sprintf("%s%d", strLogIndex, logIndex)
}
示例2: GetFloat
// GetFloat decodes a float64 value from the bytes field of the receiver. If
// the bytes field is not 8 bytes in length or the tag is not FLOAT an error
// will be returned.
func (v Value) GetFloat() (float64, error) {
if tag := v.GetTag(); tag != ValueType_FLOAT {
return 0, fmt.Errorf("value type is not %s: %s", ValueType_FLOAT, tag)
}
dataBytes := v.dataBytes()
if len(dataBytes) != 8 {
return 0, fmt.Errorf("float64 value should be exactly 8 bytes: %d", len(dataBytes))
}
_, u, err := encoding.DecodeUint64Ascending(dataBytes)
if err != nil {
return 0, err
}
return math.Float64frombits(u), nil
}
示例3: DecodeFloatValue
// DecodeFloatValue decodes a value encoded by EncodeFloatValue.
func DecodeFloatValue(b []byte) ([]byte, float64, error) {
if len(b) == 0 {
return nil, 0, fmt.Errorf("array is empty")
}
if tag := ValueType(b[0]); tag != ValueType_FLOAT {
return nil, 0, fmt.Errorf("value type is not %s: %s", ValueType_FLOAT, tag)
}
b = b[1:]
if len(b) < 8 {
return nil, 0, fmt.Errorf("float64 value should be exactly 8 bytes: %d", len(b))
}
b, f, err := encoding.DecodeUint64Ascending(b)
return b, math.Float64frombits(f), err
}
示例4: outputDotFile
// outputDotFile generates a .dot file describing the current state of
// the gossip network. nodes is a map from network address to gossip
// node. edgeSet is empty on the first invocation, but
// its content is set to encompass the entire set of edges in the
// network when this method returns. It should be resupplied with each
// successive invocation, as it is used to determine which edges are
// new and which have been deleted and show those changes visually in
// the output graph. New edges are drawn green; edges which were
// removed over the course of the last simulation step(s) are drawn in
// a lightly-dashed red.
//
// The format of the output looks like this:
//
// digraph G {
// node [shape=record];
// node1 [fontsize=12,label="{Node 1|MH=3}"]
// node1 -> node3 [color=green]
// node1 -> node4
// node1 -> node5 [color=red,style=dotted]
// node2 [fontsize=24,label="{Node 2|MH=2}"]
// node2 -> node5
// node3 [fontsize=18,label="{Node 3|MH=5}"]
// node3 -> node5
// node3 -> node4
// node4 [fontsize=24,label="{Node 4|MH=4}"]
// node4 -> node2
// node5 [fontsize=24,label="{Node 5|MH=1}"]
// node5 -> node2
// node5 -> node3
// }
//
// Returns the name of the output file and a boolean for whether or not
// the network has quiesced (that is, no new edges, and all nodes are
// connected).
func outputDotFile(dotFN string, cycle int, network *simulation.Network, edgeSet map[string]edge) (string, bool) {
f, err := os.Create(dotFN)
if err != nil {
log.Fatalf("unable to create temp file: %s", err)
}
defer f.Close()
// Determine maximum number of incoming connections. Create outgoing
// edges, keeping track of which are new since last time (added=true).
outgoingMap := make(edgeMap)
var maxIncoming int
quiescent := true
// The order the graph file is written influences the arrangement
// of nodes in the output image, so it makes sense to eliminate
// randomness here. Unfortunately with graphviz it's fairly hard
// to get a consistent ordering.
for _, simNode := range network.Nodes {
node := simNode.Gossip
incoming := node.Incoming()
for _, iNode := range incoming {
e := edge{dest: node.GetNodeID()}
key := fmt.Sprintf("%d:%d", iNode, node.GetNodeID())
if _, ok := edgeSet[key]; !ok {
e.added = true
quiescent = false
}
delete(edgeSet, key)
outgoingMap.addEdge(iNode, e)
}
if len(incoming) > maxIncoming {
maxIncoming = len(incoming)
}
}
// Find all edges which were deleted.
for key, e := range edgeSet {
e.added = false
e.deleted = true
quiescent = false
nodeID, err := strconv.Atoi(strings.Split(key, ":")[0])
if err != nil {
log.Fatal(err)
}
outgoingMap.addEdge(roachpb.NodeID(nodeID), e)
delete(edgeSet, key)
}
fmt.Fprintln(f, "digraph G {")
fmt.Fprintln(f, "node [shape=record];")
for _, simNode := range network.Nodes {
node := simNode.Gossip
var missing []roachpb.NodeID
var totalAge int64
for _, otherNode := range network.Nodes {
if otherNode == simNode {
continue // skip the node's own info
}
infoKey := otherNode.Addr.String()
// GetInfo returns an error if the info is missing.
if info, err := node.GetInfo(infoKey); err != nil {
missing = append(missing, otherNode.Gossip.GetNodeID())
quiescent = false
} else {
_, val, err := encoding.DecodeUint64Ascending(info)
if err != nil {
log.Fatalf("bad decode of node info cycle: %s", err)
//.........这里部分代码省略.........
示例5: runDebugCheckStoreCmd
func runDebugCheckStoreCmd(cmd *cobra.Command, args []string) error {
stopper := stop.NewStopper()
defer stopper.Stop()
if len(args) != 1 {
return errors.New("required arguments: dir")
}
db, err := openStore(cmd, args[0], stopper)
if err != nil {
return err
}
// Iterate over the entire range-id-local space.
start := roachpb.Key(keys.LocalRangeIDPrefix)
end := start.PrefixEnd()
replicaInfo := map[roachpb.RangeID]*replicaCheckInfo{}
getReplicaInfo := func(rangeID roachpb.RangeID) *replicaCheckInfo {
if info, ok := replicaInfo[rangeID]; ok {
return info
}
replicaInfo[rangeID] = &replicaCheckInfo{}
return replicaInfo[rangeID]
}
if _, err := engine.MVCCIterate(context.Background(), db, start, end, hlc.MaxTimestamp,
false /* !consistent */, nil, /* txn */
false /* !reverse */, func(kv roachpb.KeyValue) (bool, error) {
rangeID, _, suffix, detail, err := keys.DecodeRangeIDKey(kv.Key)
if err != nil {
return false, err
}
switch {
case bytes.Equal(suffix, keys.LocalRaftTruncatedStateSuffix):
var trunc roachpb.RaftTruncatedState
if err := kv.Value.GetProto(&trunc); err != nil {
return false, err
}
getReplicaInfo(rangeID).truncatedIndex = trunc.Index
case bytes.Equal(suffix, keys.LocalRaftAppliedIndexSuffix):
idx, err := kv.Value.GetInt()
if err != nil {
return false, err
}
getReplicaInfo(rangeID).appliedIndex = uint64(idx)
case bytes.Equal(suffix, keys.LocalRaftLogSuffix):
_, index, err := encoding.DecodeUint64Ascending(detail)
if err != nil {
return false, err
}
ri := getReplicaInfo(rangeID)
if ri.firstIndex == 0 {
ri.firstIndex = index
ri.lastIndex = index
} else {
if index != ri.lastIndex+1 {
fmt.Printf("range %s: log index anomaly: %v followed by %v\n",
rangeID, ri.lastIndex, index)
}
ri.lastIndex = index
}
}
return false, nil
}); err != nil {
return err
}
for rangeID, info := range replicaInfo {
if info.truncatedIndex != info.firstIndex-1 {
fmt.Printf("range %s: truncated index %v should equal first index %v - 1\n",
rangeID, info.truncatedIndex, info.firstIndex)
}
if info.appliedIndex < info.firstIndex || info.appliedIndex > info.lastIndex {
fmt.Printf("range %s: applied index %v should be between first index %v and last index %v\n",
rangeID, info.appliedIndex, info.firstIndex, info.lastIndex)
}
}
return nil
}