runner

package
v1.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 13, 2023 License: MPL-2.0 Imports: 2 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddrTranslator

type AddrTranslator interface {
	// Called before connecting on any addresses received back from the plugin.
	PluginToHost(pluginNet, pluginAddr string) (hostNet string, hostAddr string, err error)

	// Called on any host process addresses before they are sent to the plugin.
	HostToPlugin(hostNet, hostAddr string) (pluginNet string, pluginAddr string, err error)
}

AddrTranslator translates addresses between the execution context of the host process and the plugin. For example, if the plugin is in a container, the file path for a Unix socket may be different between the host and the container.

It is only intended to be used by the host process.

type AttachedRunner

type AttachedRunner interface {
	// Wait should wait until the plugin stops running, whether in response to
	// an out of band signal or in response to calling Kill().
	Wait(ctx context.Context) error

	// Kill should stop the plugin and perform any cleanup required.
	Kill(ctx context.Context) error

	// ID is a unique identifier to represent the running plugin. e.g. pid or
	// container ID.
	ID() string

	AddrTranslator
}

AttachedRunner defines a limited subset of Runner's interface to represent the reduced responsibility for plugin lifecycle when attaching to an already running plugin.

type ReattachFunc

type ReattachFunc func() (AttachedRunner, error)

ReattachFunc can be passed to a client's reattach config to reattach to an already running plugin instead of starting it ourselves.

type Runner

type Runner interface {
	// Start should start the plugin and ensure any work required for servicing
	// other interface methods is done. If the context is cancelled, it should
	// only abort any attempts to _start_ the plugin. Waiting and shutdown are
	// handled separately.
	Start(ctx context.Context) error

	// Diagnose makes a best-effort attempt to return any debug information that
	// might help users understand why a plugin failed to start and negotiate a
	// connection.
	Diagnose(ctx context.Context) string

	// Stdout is used to negotiate the go-plugin protocol.
	Stdout() io.ReadCloser

	// Stderr is used for forwarding plugin logs to the host process logger.
	Stderr() io.ReadCloser

	// Name is a human-friendly name for the plugin, such as the path to the
	// executable. It does not have to be unique.
	Name() string

	AttachedRunner
}

Runner defines the interface required by go-plugin to manage the lifecycle of of a plugin and attempt to negotiate a connection with it. Note that this is orthogonal to the protocol and transport used, which is negotiated over stdout.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL