Documentation

Overview

    Package isolated defines the isolated common code shared by the client and server.

    Index

    Constants

    View Source
    const IsolatedFormatVersion = "2.0"

      IsolatedFormatVersion is version of *.isolated file format. Put into JSON.

      Variables

      This section is empty.

      Functions

      func GetCompressor

      func GetCompressor(namespace string, out io.Writer) (io.WriteCloser, error)

        GetCompressor returns a fresh instance of the compression algorithm.

        It must be closed after use.

        It is currently hardcoded to RFC 1950 (zlib).

        func GetDecompressor

        func GetDecompressor(namespace string, in io.Reader) (io.ReadCloser, error)

          GetDecompressor returns a fresh instance of the decompression algorithm.

          It must be closed after use.

          It is currently hardcoded to RFC 1950 (zlib).

          func GetHash

          func GetHash(namespace string) crypto.Hash

            GetHash returns a fresh instance of the hashing algorithm to be used to calculate the HexDigest.

            A prefix of "sha256-" and "sha512-" respectively returns a sha-256 and sha-512 instance. Otherwise a sha-1 instance is returned.

            func HashFile

            func HashFile(h crypto.Hash, path string) (isolateservice.HandlersEndpointsV1Digest, error)

              HashFile hashes a file and returns a HandlersEndpointsV1Digest out of it.

              func Pack

              func Pack(values []int64) ([]byte, error)

                Pack returns a deflate'd buffer of delta encoded varints.

                func Unpack

                func Unpack(data []byte) ([]int64, error)

                  Unpack decompresses a deflate'd delta encoded list of varints.

                  func WriteStats

                  func WriteStats(path string, hot, cold []int64) error

                    WriteStats writes cache stats in packed format.

                    Types

                    type File

                    type File struct {
                    	Digest HexDigest `json:"h,omitempty"`
                    	Link   *string   `json:"l,omitempty"`
                    	Mode   *int      `json:"m,omitempty"`
                    	Size   *int64    `json:"s,omitempty"`
                    	Type   FileType  `json:"t,omitempty"`
                    }

                      File describes a single file referenced by content in a .isolated file.

                      For regular files, the Digest, Mode, and Size fields should be set, and the Type field should be set for non-basic files. For symbolic links, only the Link field should be set.

                      func BasicFile

                      func BasicFile(d HexDigest, mode int, size int64) File

                        BasicFile returns a File populated for a basic file.

                        func SymLink(link string) File

                          SymLink returns a File populated for a symbolic link.

                          func TarFile

                          func TarFile(d HexDigest, size int64) File

                            TarFile returns a file populated for a tar archive file.

                            type FileType

                            type FileType string

                              FileType describes the type of file being isolated.

                              const (
                              	// Basic represents normal files. It is the default type.
                              	Basic FileType = "basic"
                              
                              	// ArArchive represents an ar archive containing a large number of small files.
                              	ArArchive FileType = "ar"
                              
                              	// TarArchive represents a tar archive containing a large number of small files.
                              	TarArchive FileType = "tar"
                              )

                              type HexDigest

                              type HexDigest string

                                HexDigest is the hash of a file that is hex-encoded. Only lower case letters are accepted.

                                func Hash

                                func Hash(h crypto.Hash, src io.Reader) (HexDigest, error)

                                  Hash hashes a reader and returns a HexDigest from it.

                                  func HashBytes

                                  func HashBytes(h crypto.Hash, content []byte) HexDigest

                                    HashBytes hashes content and returns a HexDigest from it.

                                    func Sum

                                    func Sum(h hash.Hash) HexDigest

                                      Sum is a shortcut to get a HexDigest from a hash.Hash.

                                      func (HexDigest) Validate

                                      func (d HexDigest) Validate(h crypto.Hash) bool

                                        Validate returns true if the hash is valid.

                                        type HexDigests

                                        type HexDigests []HexDigest

                                          HexDigests is a slice of HexDigest that implements sort.Interface.

                                          func (HexDigests) Len

                                          func (h HexDigests) Len() int

                                          func (HexDigests) Less

                                          func (h HexDigests) Less(i, j int) bool

                                          func (HexDigests) Swap

                                          func (h HexDigests) Swap(i, j int)

                                          type Isolated

                                          type Isolated struct {
                                          	Algo     string          `json:"algo"` // Must be "sha-1"
                                          	Files    map[string]File `json:"files,omitempty"`
                                          	Includes HexDigests      `json:"includes,omitempty"`
                                          	Version  string          `json:"version"`
                                          }

                                            Isolated is the data from a JSON serialized .isolated file.

                                            func New

                                            func New(h crypto.Hash) *Isolated

                                              New returns a new Isolated with the default Algo and Version.