storj/lib/uplinkc/scope.go
Bryan White bc33964729 Uplink C bindings part 1 (#2196)
* uplink cbindings tooling
2019-06-13 11:09:05 -04:00

35 lines
749 B
Go

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
package main
import (
"context"
"storj.io/storj/internal/fpath"
)
// scope implements nesting context for foreign api.
type scope struct {
ctx context.Context
cancel func()
}
// rootScope creates a scope with the specified temp directory.
func rootScope(tempDir string) scope {
ctx := context.Background()
if tempDir == "inmemory" {
ctx = fpath.WithTempData(ctx, "", true)
} else {
ctx = fpath.WithTempData(ctx, tempDir, false)
}
ctx, cancel := context.WithCancel(ctx)
return scope{ctx, cancel}
}
// child creates an inherited scope.
func (parent *scope) child() scope {
ctx, cancel := context.WithCancel(parent.ctx)
return scope{ctx, cancel}
}