26 lines
922 B
Go
26 lines
922 B
Go
|
// The plugin package exposes functions and helpers for communicating to
|
||
|
// plugins which are implemented as standalone binary applications.
|
||
|
//
|
||
|
// plugin.Client fully manages the lifecycle of executing the application,
|
||
|
// connecting to it, and returning the RPC client for dispensing plugins.
|
||
|
//
|
||
|
// plugin.Serve fully manages listeners to expose an RPC server from a binary
|
||
|
// that plugin.Client can connect to.
|
||
|
package plugin
|
||
|
|
||
|
import (
|
||
|
"net/rpc"
|
||
|
)
|
||
|
|
||
|
// Plugin is the interface that is implemented to serve/connect to an
|
||
|
// inteface implementation.
|
||
|
type Plugin interface {
|
||
|
// Server should return the RPC server compatible struct to serve
|
||
|
// the methods that the Client calls over net/rpc.
|
||
|
Server(*MuxBroker) (interface{}, error)
|
||
|
|
||
|
// Client returns an interface implementation for the plugin you're
|
||
|
// serving that communicates to the server end of the plugin.
|
||
|
Client(*MuxBroker, *rpc.Client) (interface{}, error)
|
||
|
}
|