Documentation
¶
Index ¶
- Variables
- type Client
- func (c *Client) Request(method string, params any) (json.RawMessage, error)
- func (c *Client) RequestWithInlineResponse(method string, params any, onResponseInline func(json.RawMessage) error) (json.RawMessage, error)
- func (c *Client) SetOnClose(fn func())
- func (c *Client) SetProcessDone(done chan struct{}, errPtr *error)
- func (c *Client) SetRequestHandler(method string, handler RequestHandler)
- func (c *Client) Start()
- func (c *Client) Stop()
- type Error
- type NotificationHandler
- type Request
- type RequestHandler
- type Response
Constants ¶
This section is empty.
Variables ¶
var ( ErrParse = &Error{Code: -32700, Message: "parse error"} ErrInvalidRequest = &Error{Code: -32600, Message: "invalid request"} ErrMethodNotFound = &Error{Code: -32601, Message: "method not found"} ErrInvalidParams = &Error{Code: -32602, Message: "invalid params"} ErrInternal = &Error{Code: -32603, Message: "internal error"} )
Standard JSON-RPC 2.0 error codes.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is a minimal JSON-RPC 2.0 client for stdio transport.
func NewClient ¶
func NewClient(stdin io.WriteCloser, stdout io.ReadCloser) *Client
NewClient creates a new JSON-RPC client.
func (*Client) RequestWithInlineResponse ¶ added in v1.0.0
func (c *Client) RequestWithInlineResponse(method string, params any, onResponseInline func(json.RawMessage) error) (json.RawMessage, error)
RequestWithInlineResponse sends a JSON-RPC request and waits for the response, invoking an optional callback synchronously from the read loop the instant a successful response is parsed — before the response is delivered to the awaiter and before the read loop dispatches the next message. Use this when client-side state must be visible (for example, a session id assigned by the server in the response) before any subsequent notification on the same connection is dispatched. If the callback returns an error, that error is returned to the awaiter in place of the response.
func (*Client) SetOnClose ¶ added in v0.2.0
func (c *Client) SetOnClose(fn func())
SetOnClose sets a callback invoked when the read loop exits unexpectedly (e.g. the underlying connection or process was lost).
func (*Client) SetProcessDone ¶ added in v0.1.25
SetProcessDone sets a channel that will be closed when the process exits, and stores the error pointer that should be returned to pending/future requests. The error is read directly from the pointer after the channel closes, avoiding a race between an async goroutine and callers checking the error.
func (*Client) SetRequestHandler ¶
func (c *Client) SetRequestHandler(method string, handler RequestHandler)
SetRequestHandler registers a handler for incoming requests from the server
type Error ¶
type Error struct {
Code int `json:"code"`
Message string `json:"message"`
Data json.RawMessage `json:"data,omitempty"`
}
Error represents a JSON-RPC error response.
type NotificationHandler ¶
type NotificationHandler func(method string, params json.RawMessage)
NotificationHandler handles incoming notifications
type Request ¶
type Request struct {
JSONRPC string `json:"jsonrpc"`
ID json.RawMessage `json:"id"` // nil for notifications
Method string `json:"method"`
Params json.RawMessage `json:"params"`
}
Request represents a JSON-RPC 2.0 request
type RequestHandler ¶
type RequestHandler func(params json.RawMessage) (json.RawMessage, *Error)
RequestHandler handles incoming server requests and returns a result or error
func NotificationHandlerFor ¶ added in v0.1.24
func NotificationHandlerFor[In any](handler func(params In)) RequestHandler
func RequestHandlerFor ¶ added in v0.1.24
func RequestHandlerFor[In, Out any](handler func(params In) (Out, *Error)) RequestHandler
RequestHandlerFor creates a RequestHandler from a typed function
type Response ¶
type Response struct {
JSONRPC string `json:"jsonrpc"`
ID json.RawMessage `json:"id,omitempty"`
Result json.RawMessage `json:"result,omitempty"`
Error *Error `json:"error,omitempty"`
}
Response represents a JSON-RPC 2.0 response