storj/lib/uplinkc/scope.go

35 lines
741 B
Go
Raw Normal View History

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
package main
import (
"context"
"storj.io/common/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}
}