123456789101112131415161718192021222324252627282930313233343536373839 |
- // 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())
- }
|