MCPcopy Create free account
hub / github.com/blobcache/blobcache / OpenFrom

Method OpenFrom

src/bccore/volapi.go:26–48  ·  view source on GitHub ↗
(ctx context.Context, base blobcache.Handle, ltok blobcache.LinkToken, mask blobcache.ActionSet)

Source from the content-addressed store, hash-verified

24}
25
26func (sys *System) OpenFrom(ctx context.Context, base blobcache.Handle, ltok blobcache.LinkToken, mask blobcache.ActionSet) (*blobcache.Handle, error) {
27 logctx.Info(ctx, "begin", zap.String("method", "OpenFrom"), zap.Stringer("oid", base.OID))
28 defer logctx.Info(ctx, "done", zap.String("method", "OpenFrom"), zap.Stringer("oid", base.OID))
29 baseVol, _, err := sys.resolveVol(base)
30 if err != nil {
31 return nil, err
32 }
33 rights, err := baseVol.backend.AccessSubVolume(ctx, ltok)
34 if err != nil {
35 return nil, err
36 }
37 if rights == 0 {
38 return nil, blobcache.ErrNoLink{Base: base.OID, Target: ltok.Target}
39 }
40 if _, err := sys.ensure(ctx, ltok.Target); err != nil {
41 return nil, fmt.Errorf("volume=%v has link to subvolume=%v, but that subvolume could not be accessed %w", base.OID, ltok.Target, err)
42 }
43 rights = rights & mask
44 createdAt := time.Now()
45 expiresAt := createdAt.Add(DefaultTxTTL)
46 h := sys.handles.Create(ltok.Target, rights, createdAt, expiresAt)
47 return &h, nil
48}
49
50func (sys *System) BeginTx(ctx context.Context, volh blobcache.Handle, txspec blobcache.TxParams) (*blobcache.Handle, error) {
51 logctx.Info(ctx, "begin", zap.String("method", "BeginTx"), zap.Stringer("oid", volh.OID))

Callers

nothing calls this directly

Calls 7

resolveVolMethod · 0.95
ensureMethod · 0.95
InfoMethod · 0.80
StringMethod · 0.65
AccessSubVolumeMethod · 0.65
AddMethod · 0.65
CreateMethod · 0.45

Tested by

no test coverage detected