]> git.arvados.org - arvados.git/blob - sdk/go/arvados/block_segment.go
22320: Fix maxBlockSize restored to wrong value after tests.
[arvados.git] / sdk / go / arvados / block_segment.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: Apache-2.0
4
5 package arvados
6
7 import (
8         "encoding/json"
9         "fmt"
10 )
11
12 // BlockSegment is a portion of a block stored in Keep. It is used in
13 // the replace_segments API.
14 type BlockSegment struct {
15         Locator string
16         Offset  int
17         Length  int
18 }
19
20 func (bs *BlockSegment) UnmarshalJSON(data []byte) error {
21         var s string
22         if err := json.Unmarshal(data, &s); err != nil {
23                 return err
24         }
25         _, err := fmt.Sscanf(s, "%s %d %d", &bs.Locator, &bs.Offset, &bs.Length)
26         return err
27 }
28
29 // MarshalText enables encoding/json to use BlockSegment as a map key.
30 func (bs BlockSegment) MarshalText() ([]byte, error) {
31         return []byte(fmt.Sprintf("%s %d %d", bs.Locator, bs.Offset, bs.Length)), nil
32 }
33
34 func (bs BlockSegment) StripAllHints() BlockSegment {
35         bs.Locator = stripAllHints(bs.Locator)
36         return bs
37 }