}
func (ks *keepstore) BlockRead(ctx context.Context, opts arvados.BlockReadOptions) (n int, err error) {
- li, err := parseLocator(opts.Locator)
+ li, err := getLocatorInfo(opts.Locator)
if err != nil {
return 0, err
}
}
func (ks *keepstore) BlockUntrash(ctx context.Context, locator string) error {
- li, err := parseLocator(locator)
+ li, err := getLocatorInfo(locator)
if err != nil {
return err
}
}
func (ks *keepstore) BlockTouch(ctx context.Context, locator string) error {
- li, err := parseLocator(locator)
+ li, err := getLocatorInfo(locator)
if err != nil {
return err
}
if !ks.cluster.Collections.BlobTrash {
return errMethodNotAllowed
}
- li, err := parseLocator(locator)
+ li, err := getLocatorInfo(locator)
if err != nil {
return err
}
}
}
+// locatorInfo expresses the attributes of a locator that are relevant
+// for keepstore decision-making.
type locatorInfo struct {
hash string
size int
- remote bool
- signed bool
+ remote bool // locator has a +R hint
+ signed bool // locator has a +A hint
}
-func parseLocator(loc string) (locatorInfo, error) {
+func getLocatorInfo(loc string) (locatorInfo, error) {
var li locatorInfo
for i, part := range strings.Split(loc, "+") {
if i == 0 {