luci: Index | Files | Directories

package isolatedclient

import ""

Package isolatedclient implements the API to communicate with the Isolated server and to process '.isolated' files.


Package Files

doc.go flags.go isolatedclient.go


const DefaultNamespace = "default-gzip"

DefaultNamespace is the namespace that should be used with the New function.

type Client Uses

type Client struct {
    // contains filtered or unexported fields

Client is a client to an isolated server.

func New Uses

func New(anonClient, authClient *http.Client, host, namespace string, rFn retry.Factory, gcs CloudStorage) *Client

New returns a new IsolateServer client.

'authClient' must implement authentication sufficient to talk to Isolate server (OAuth tokens with 'email' scope).

'anonClient' must be a functional http.Client.

If either client is nil, it will use http.DefaultClient (which will not work on Classic AppEngine!).

If you're unsure which namespace to use, use the DefaultNamespace constant.

If gcs is nil, the defaultGCSHandler is used for fetching from and pushing to GCS.

The hashing algorithm used depends on the namespace.

func (*Client) Contains Uses

func (i *Client) Contains(c context.Context, items []*isolateservice.HandlersEndpointsV1Digest) (out []*PushState, err error)

Contains looks up cache presence on the server of multiple items.

The returned list is in the same order as 'items', with entries nil for items that were present.

func (*Client) Fetch Uses

func (i *Client) Fetch(c context.Context, digest isolated.HexDigest, dest io.Writer) error

Fetch downloads an item from the server.

func (*Client) Hash Uses

func (i *Client) Hash() crypto.Hash

Hash returns the hashing algorithm used for this client.

func (*Client) Push Uses

func (i *Client) Push(c context.Context, state *PushState, source Source) (err error)

Push pushed a missing item, as reported by Contains(), to the server.

func (*Client) ServerCapabilities Uses

func (i *Client) ServerCapabilities(c context.Context) (*isolateservice.HandlersEndpointsV1ServerDetails, error)

ServerCapabilities returns the server details.

type CloudStorage Uses

type CloudStorage interface {
    // Fetch is a handler for retrieving specified content from GCS and storing
    // the response in the provided destination buffer.
    Fetch(context.Context, *Client, isolateservice.HandlersEndpointsV1RetrievedContent, io.Writer) error
    // Push is a handler for pushing content from provided buffer to GCS.
    Push(context.Context, *Client, isolateservice.HandlersEndpointsV1PreuploadStatus, Source) error

CloudStorage is the interface for clients to fetch from and push to GCS storage.

type Flags Uses

type Flags struct {
    ServerURL string
    Namespace string

Flags contains values parsed from command line arguments.

func (*Flags) Init Uses

func (c *Flags) Init(f *flag.FlagSet)

Init registers flags in a given flag set.

func (*Flags) Parse Uses

func (c *Flags) Parse() error

Parse applies changes specified by command line flags.

type PushState Uses

type PushState struct {
    // contains filtered or unexported fields

PushState is per-item state passed from IsolateServer.Contains() to IsolateServer.Push().

Its content is implementation specific.

type Source Uses

type Source func() (io.ReadCloser, error)

Source is a generator method to return source data. A generated Source must be Closed before the generator is called again.

func NewBytesSource Uses

func NewBytesSource(d []byte) Source

NewBytesSource returns a Source implementation that reads from the supplied byte slice.


isolatedfakePackage isolatedfake implements an in-process fake Isolated server for integration testing.

Package isolatedclient imports 22 packages (graph) and is imported by 23 packages. Updated 2020-04-01. Refresh now. Tools for package owners.