+++ /dev/null
-package plugin
-
-import (
- "io"
- "net"
-)
-
-// Protocol is an enum representing the types of protocols.
-type Protocol string
-
-const (
- ProtocolInvalid Protocol = ""
- ProtocolNetRPC Protocol = "netrpc"
- ProtocolGRPC Protocol = "grpc"
-)
-
-// ServerProtocol is an interface that must be implemented for new plugin
-// protocols to be servers.
-type ServerProtocol interface {
- // Init is called once to configure and initialize the protocol, but
- // not start listening. This is the point at which all validation should
- // be done and errors returned.
- Init() error
-
- // Config is extra configuration to be outputted to stdout. This will
- // be automatically base64 encoded to ensure it can be parsed properly.
- // This can be an empty string if additional configuration is not needed.
- Config() string
-
- // Serve is called to serve connections on the given listener. This should
- // continue until the listener is closed.
- Serve(net.Listener)
-}
-
-// ClientProtocol is an interface that must be implemented for new plugin
-// protocols to be clients.
-type ClientProtocol interface {
- io.Closer
-
- // Dispense dispenses a new instance of the plugin with the given name.
- Dispense(string) (interface{}, error)
-
- // Ping checks that the client connection is still healthy.
- Ping() error
-}