Documentation ¶
Overview ¶
Package bind contains code for binding to and controlling devices.
Index ¶
- Constants
- func PutRegistry(ctx context.Context, m *Registry) context.Context
- type Device
- type DeviceListener
- type Registry
- func (r *Registry) AddDevice(ctx context.Context, d Device)
- func (r *Registry) DefaultDevice() Device
- func (r *Registry) Device(id id.ID) Device
- func (r *Registry) DeviceProperty(ctx context.Context, d Device, k interface{}) interface{}
- func (r *Registry) Devices() []Device
- func (r *Registry) Listen(l DeviceListener) (unregister func())
- func (r *Registry) RemoveDevice(ctx context.Context, d Device)
- func (r *Registry) SetDeviceProperty(ctx context.Context, d Device, k, v interface{})
- type Simple
- func (b *Simple) ABI() *device.ABI
- func (b *Simple) CanTrace() bool
- func (b *Simple) ConnectPerfetto(ctx context.Context) (*perfetto.Client, error)
- func (b *Simple) FileContents(ctx context.Context, path string) (string, error)
- func (b *Simple) GetEnv(ctx context.Context) (*shell.Env, error)
- func (b *Simple) GetURIRoot() string
- func (b *Simple) GetWorkingDirectory(ctx context.Context) (string, error)
- func (b *Simple) Instance() *device.Instance
- func (b *Simple) IsDirectory(ctx context.Context, path string) (bool, error)
- func (b *Simple) IsFile(ctx context.Context, path string) (bool, error)
- func (b *Simple) IsLocal(ctx context.Context) (bool, error)
- func (b *Simple) ListDirectories(ctx context.Context, path string) ([]string, error)
- func (b *Simple) ListExecutables(ctx context.Context, path string) ([]string, error)
- func (b *Simple) PushFile(ctx context.Context, sourcePath, destPath string) error
- func (b *Simple) RemoveFile(ctx context.Context, path string) error
- func (b *Simple) SetupLocalPort(ctx context.Context, port int) (int, error)
- func (b *Simple) Shell(name string, args ...string) shell.Cmd
- func (b *Simple) Status(ctx context.Context) Status
- func (b *Simple) String() string
- func (b *Simple) SupportsPerfetto(ctx context.Context) bool
- func (b *Simple) TempDir(ctx context.Context) (string, app.Cleanup, error)
- func (b *Simple) TempFile(ctx context.Context) (string, func(ctx context.Context), error)
- func (b *Simple) WriteFile(ctx context.Context, contents io.Reader, mode os.FileMode, destPath string) error
Constants ¶
const ( // ErrShellNotSupported may be returned by Start if the target does not support a shell. ErrShellNotSupported = fault.Const("bind.Simple does not support shell commands") )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Device ¶
type Device interface { // Instance returns the instance information for this device. Instance() *device.Instance // State returns the last known connected status of the device. Status(ctx context.Context) Status // Shell is a helper that builds a shell.Cmd with d.ShellTarget() as its target Shell(name string, args ...string) shell.Cmd // TempFile creates a temporary file on the given Device. It returns the // path to the file, and a function that can be called to clean it up. TempFile(ctx context.Context) (string, func(ctx context.Context), error) // TempDir makes a temporary directory, and returns the // path, as well as a function to call to clean it up. TempDir(ctx context.Context) (string, app.Cleanup, error) // FileContents returns the contents of a given file on the Device. FileContents(ctx context.Context, path string) (string, error) // RemoveFile removes the given file from the device RemoveFile(ctx context.Context, path string) error // GetEnv returns the default environment for the Device. GetEnv(ctx context.Context) (*shell.Env, error) // SetupLocalPort makes sure that the given port can be accessed on localhost // It returns a new port number to connect to on localhost SetupLocalPort(ctx context.Context, port int) (int, error) // ListExecutables returns the executables in a particular directory as given by path ListExecutables(ctx context.Context, path string) ([]string, error) // ListDirectories returns a list of directories rooted at a particular path ListDirectories(ctx context.Context, path string) ([]string, error) // GetURIRoot returns the root URI for the entire system GetURIRoot() string // IsFile returns true if the given path is a file IsFile(ctx context.Context, path string) (bool, error) // IsDirectory returns true if the given path is a directory IsDirectory(ctx context.Context, path string) (bool, error) // GetWorkingDirectory returns the directory that this device considers CWD GetWorkingDirectory(ctx context.Context) (string, error) // IsLocal returns true if this tracer is local IsLocal(ctx context.Context) (bool, error) // CanTrace returns true if this device can be used to take a trace CanTrace() bool // SupportsPerfetto returns true if this device will work with perfetto SupportsPerfetto(ctx context.Context) bool // ConnectPerfetto connects to a Perfetto service running on this device // and returns an open socket connection to the service. ConnectPerfetto(ctx context.Context) (*perfetto.Client, error) // PushFile will transfer the local file at sourcePath to the remote // machine at destPath PushFile(ctx context.Context, sourcePath, destPath string) error // WriteFile writes the given file into the given location on the remote device WriteFile(ctx context.Context, contents io.Reader, mode os.FileMode, destPath string) error }
Device represents a connection to an attached device.
type DeviceListener ¶
type DeviceListener interface { OnDeviceAdded(context.Context, Device) OnDeviceRemoved(context.Context, Device) }
DeviceListener is the interface implemented by types that respond to devices being added to and removed from the registry.
func NewDeviceListener ¶
func NewDeviceListener(onDeviceAdded, onDeviceRemoved func(context.Context, Device)) DeviceListener
NewDeviceListener returns a DeviceListener that delegates calls on to onDeviceAdded and onDeviceRemoved.
type Registry ¶
Registry is holds a list of registered devices. It provides methods for listening for devices that are added to and removed from the device.
func GetRegistry ¶
GetRegistry retrieves the registry from a context previously annotated by PutRegistry.
func (*Registry) DefaultDevice ¶
DefaultDevice returns the first device registered with the Registry.
func (*Registry) Device ¶
Device looks up the device with the specified identifier. If no device with the specified identifier was registered with the Registry then nil is returner.
func (*Registry) DeviceProperty ¶
DeviceProperty returns the property with the key k for the device d, previously set with SetDeviceProperty. If the property for the device does not exist then nil is returned.
func (*Registry) Listen ¶
func (r *Registry) Listen(l DeviceListener) (unregister func())
Listen registers l to be called whenever a device is added to or removed from the registry. l will be unregistered when the returned function is called.
func (*Registry) RemoveDevice ¶
RemoveDevice unregisters the device d with the Registry.
func (*Registry) SetDeviceProperty ¶
SetDeviceProperty sets the property with the key k to the value v for the device d. This property can be retrieved with DeviceProperty. Properties will persist in the registry even when the device has not been added or has been removed.
type Simple ¶
Simple is a very short implementation of the Device interface. It directly holds the devices Information struct, and its last known Status, but provides no other active functionality. It can be used for fake devices, or as a building block to create a more complete device.
func (*Simple) ABI ¶
ABI implements the Device interface returning the first ABI from the Information, or UnknownABI if it has none.
func (*Simple) ConnectPerfetto ¶
ConnectPerfetto connects to a Perfetto service running on this device and returns an open socket connection to the service.
func (*Simple) FileContents ¶
FileContents returns the contents of a given file on the Device.
func (*Simple) GetURIRoot ¶
GetURIRoot returns the root URI for the entire system
func (*Simple) GetWorkingDirectory ¶
GetWorkingDirectory returns the directory that this device considers CWD
func (*Simple) Instance ¶
Instance implements the Device interface returning the Information in the To field.
func (*Simple) IsDirectory ¶
IsDirectory returns true if the given path refers to a directory
func (*Simple) ListDirectories ¶
ListDirectories returns a list of directories rooted at a particular path
func (*Simple) ListExecutables ¶
ListExecutables returns the executables in a particular directory as given by path
func (*Simple) RemoveFile ¶
RemoveFile removes the given file from the device
func (*Simple) SetupLocalPort ¶
SetupLocalPort makes sure that the given port can be accessed on localhost It returns a new port number to connect to on localhost
func (*Simple) Shell ¶
Shell implements the Device interface returning commands that will error if run.
func (*Simple) Status ¶
Status implements the Device interface returning the Status from the LastStatus field.
func (*Simple) SupportsPerfetto ¶
SupportsPerfetto returns true if the given device supports taking a Perfetto trace.