summaryrefslogtreecommitdiffstats
path: root/plugin/rpcplugin/process.go
blob: 4b3362d68751fa2861cc677ba47a13e6ef7d9a0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package rpcplugin

import (
	"context"
	"io"
)

type Process interface {
	// Waits for the process to exit and returns an error if a problem occurred or the process exited
	// with a non-zero status.
	Wait() error
}

// NewProcess launches an RPC executable in a new process and returns an IPC that can be used to
// communicate with it.
func NewProcess(ctx context.Context, path string) (Process, io.ReadWriteCloser, error) {
	return newProcess(ctx, path)
}

// When called on a process launched with NewProcess, returns the inherited IPC.
func InheritedProcessIPC() (io.ReadWriteCloser, error) {
	return inheritedProcessIPC()
}