lsprpc

package
v0.0.34 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2021 License: BSD-3-Clause, BSD-3-Clause Imports: 24 Imported by: 0

Documentation

Overview

Package lsprpc implements a jsonrpc2.StreamServer that may be used to serve the LSP on a jsonrpc2 channel.

Index

Constants

View Source
const AutoNetwork = "auto"

AutoNetwork is the pseudo network type used to signal that gopls should use automatic discovery to resolve a remote address.

Variables

This section is empty.

Functions

func ConnectToRemote added in v0.0.32

func ConnectToRemote(ctx context.Context, network, addr string, opts ...RemoteOption) (net.Conn, error)

Types

type ClientSession added in v0.0.30

type ClientSession struct {
	SessionID string `json:"sessionID"`
	Logfile   string `json:"logfile"`
	DebugAddr string `json:"debugAddr"`
}

ClientSession identifies a current client LSP session on the server. Note that it looks similar to handshakeResposne, but in fact 'Logfile' and 'DebugAddr' now refer to the client.

type Forwarder added in v0.0.30

type Forwarder struct {
	// contains filtered or unexported fields
}

A Forwarder is a jsonrpc2.StreamServer that handles an LSP stream by forwarding it to a remote. This is used when the gopls process started by the editor is in the `-remote` mode, which means it finds and connects to a separate gopls daemon. In these cases, we still want the forwarder gopls to be instrumented with telemetry, and want to be able to in some cases hijack the jsonrpc2 connection with the daemon.

func NewForwarder added in v0.0.30

func NewForwarder(network, addr string, opts ...RemoteOption) *Forwarder

NewForwarder creates a new Forwarder, ready to forward connections to the remote server specified by network and addr.

func (*Forwarder) ServeStream added in v0.0.30

func (f *Forwarder) ServeStream(ctx context.Context, clientConn jsonrpc2.Conn) error

ServeStream dials the forwarder remote and binds the remote to serve the LSP on the incoming stream.

type RemoteDebugAddress added in v0.0.30

type RemoteDebugAddress string

RemoteDebugAddress configures the address used by the auto-started Gopls daemon for serving debug information.

type RemoteListenTimeout added in v0.0.30

type RemoteListenTimeout time.Duration

RemoteListenTimeout configures the amount of time the auto-started gopls daemon will wait with no client connections before shutting down.

type RemoteLogfile added in v0.0.30

type RemoteLogfile string

RemoteLogfile configures the logfile location for the auto-started gopls daemon.

type RemoteOption added in v0.0.32

type RemoteOption interface {
	// contains filtered or unexported methods
}

A RemoteOption configures the behavior of the auto-started remote.

type ServerState added in v0.0.30

type ServerState struct {
	Logfile         string          `json:"logfile"`
	DebugAddr       string          `json:"debugAddr"`
	GoplsPath       string          `json:"goplsPath"`
	CurrentClientID string          `json:"currentClientID"`
	Clients         []ClientSession `json:"clients"`
}

ServerState holds information about the gopls daemon process, including its debug information and debug information of all of its current connected clients.

func QueryServerState added in v0.0.30

func QueryServerState(ctx context.Context, network, address string) (*ServerState, error)

QueryServerState queries the server state of the current server.

type StreamServer

type StreamServer struct {
	// contains filtered or unexported fields
}

The StreamServer type is a jsonrpc2.StreamServer that handles incoming streams as a new LSP session, using a shared cache.

func NewStreamServer

func NewStreamServer(cache *cache.Cache, daemon bool) *StreamServer

NewStreamServer creates a StreamServer using the shared cache. If withTelemetry is true, each session is instrumented with telemetry that records RPC statistics.

func (*StreamServer) ServeStream

func (s *StreamServer) ServeStream(ctx context.Context, conn jsonrpc2.Conn) error

ServeStream implements the jsonrpc2.StreamServer interface, by handling incoming streams using a new lsp server.

Jump to

Keyboard shortcuts

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