mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-22 10:58:57 +00:00
40 lines
829 B
Go
40 lines
829 B
Go
|
// Copyright (C) 2019 The Syncthing Authors.
|
||
|
//
|
||
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
||
|
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||
|
// You can obtain one at https://mozilla.org/MPL/2.0/.
|
||
|
|
||
|
package protocol
|
||
|
|
||
|
import (
|
||
|
"encoding/binary"
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/syncthing/syncthing/lib/rand"
|
||
|
)
|
||
|
|
||
|
type IndexID uint64
|
||
|
|
||
|
func (i IndexID) String() string {
|
||
|
return fmt.Sprintf("0x%016X", uint64(i))
|
||
|
}
|
||
|
|
||
|
func (i IndexID) Marshal() ([]byte, error) {
|
||
|
bs := make([]byte, 8)
|
||
|
binary.BigEndian.PutUint64(bs, uint64(i))
|
||
|
return bs, nil
|
||
|
}
|
||
|
|
||
|
func (i *IndexID) Unmarshal(bs []byte) error {
|
||
|
if len(bs) != 8 {
|
||
|
return errors.New("incorrect IndexID length")
|
||
|
}
|
||
|
*i = IndexID(binary.BigEndian.Uint64(bs))
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func NewIndexID() IndexID {
|
||
|
return IndexID(rand.Uint64())
|
||
|
}
|