transport

package
v0.1.13 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2025 License: MIT Imports: 16 Imported by: 13

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewSSEServerTransportAndHandler

func NewSSEServerTransportAndHandler(messageEndpointURL string,
	opts ...SSEServerTransportAndHandlerOption,
) (ServerTransport, *SSEHandler, error)

NewSSEServerTransportAndHandler returns transport without starting the HTTP server, and returns a Handler for users to start their own HTTP server externally eg: 1. relative path transport, handler, _ := NewSSEServerTransportAndHandler("/sse/message") http.Handle("/sse", handler.HandleSSE()) http.Handle("/sse/message", handler.HandleMessage()) http.ListenAndServe(":8080", nil) 2. full url transport, handler, _ := NewSSEServerTransportAndHandler("https://thinkingai.xyz/api/v1/sse/message") http.Handle("/sse", handler.HandleSSE()) http.Handle("/sse/message", handler.HandleMessage()) http.ListenAndServe(":8080", nil)

Types

type ClientReceiverF

type ClientReceiverF func(ctx context.Context, msg []byte) error

func (ClientReceiverF) Receive

func (f ClientReceiverF) Receive(ctx context.Context, msg []byte) error

type ClientTransport

type ClientTransport interface {
	// Start initiates the transport connection
	Start() error

	// Send transmits a message
	Send(ctx context.Context, msg Message) error

	// SetReceiver sets the handler for messages from the peer
	SetReceiver(receiver clientReceiver)

	// Close terminates the transport connection
	Close() error
}

func NewMockClientTransport

func NewMockClientTransport(in io.ReadCloser, out io.Writer) ClientTransport

func NewSSEClientTransport

func NewSSEClientTransport(serverURL string, opts ...SSEClientTransportOption) (ClientTransport, error)

func NewStdioClientTransport

func NewStdioClientTransport(command string, args []string, opts ...StdioClientTransportOption) (ClientTransport, error)

type Message

type Message []byte

Message defines the basic message interface

func (Message) String

func (msg Message) String() string

type SSEClientTransportOption

type SSEClientTransportOption func(*sseClientTransport)

func WithSSEClientOptionHTTPClient

func WithSSEClientOptionHTTPClient(client *http.Client) SSEClientTransportOption

func WithSSEClientOptionLogger

func WithSSEClientOptionLogger(log pkg.Logger) SSEClientTransportOption

func WithSSEClientOptionReceiveTimeout

func WithSSEClientOptionReceiveTimeout(timeout time.Duration) SSEClientTransportOption

type SSEHandler

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

func (*SSEHandler) HandleMessage

func (h *SSEHandler) HandleMessage() http.Handler

HandleMessage processes incoming JSON-RPC messages from clients and sends responses back through both the SSE connection and HTTP response.

func (*SSEHandler) HandleSSE

func (h *SSEHandler) HandleSSE() http.Handler

HandleSSE handles incoming SSE connections from clients and sends messages to them.

type SSEServerTransportAndHandlerOption

type SSEServerTransportAndHandlerOption func(*sseServerTransport)

func WithSSEServerTransportAndHandlerOptionLogger

func WithSSEServerTransportAndHandlerOptionLogger(logger pkg.Logger) SSEServerTransportAndHandlerOption

type SSEServerTransportOption

type SSEServerTransportOption func(*sseServerTransport)

func WithSSEServerTransportOptionLogger

func WithSSEServerTransportOptionLogger(logger pkg.Logger) SSEServerTransportOption

func WithSSEServerTransportOptionMessagePath

func WithSSEServerTransportOptionMessagePath(messagePath string) SSEServerTransportOption

func WithSSEServerTransportOptionSSEPath

func WithSSEServerTransportOptionSSEPath(ssePath string) SSEServerTransportOption

func WithSSEServerTransportOptionURLPrefix

func WithSSEServerTransportOptionURLPrefix(urlPrefix string) SSEServerTransportOption

type ServerReceiverF

type ServerReceiverF func(ctx context.Context, sessionID string, msg []byte) error

func (ServerReceiverF) Receive

func (f ServerReceiverF) Receive(ctx context.Context, sessionID string, msg []byte) error

type ServerTransport

type ServerTransport interface {
	// Run starts listening for requests, this is synchronous, and cannot return before Shutdown is called
	Run() error

	// Send transmits a message
	Send(ctx context.Context, sessionID string, msg Message) error

	// SetReceiver sets the handler for messages from the peer
	SetReceiver(serverReceiver)

	SetSessionManager(manager sessionManager)

	// Shutdown gracefully closes, the internal implementation needs to stop receiving messages first,
	// then wait for serverCtx to be canceled, while using userCtx to control timeout.
	// userCtx is used to control the timeout of the server shutdown.
	// serverCtx is used to coordinate the internal cleanup sequence:
	// 1. turn off message listen
	// 2. Wait for serverCtx to be done (indicating server shutdown is complete)
	// 3. Cancel the transport's context to stop all ongoing operations
	// 4. Wait for all in-flight sends to complete
	// 5. Close all session
	Shutdown(userCtx context.Context, serverCtx context.Context) error
}

func NewMockServerTransport

func NewMockServerTransport(in io.ReadCloser, out io.Writer) ServerTransport

func NewSSEServerTransport

func NewSSEServerTransport(addr string, opts ...SSEServerTransportOption) (ServerTransport, error)

NewSSEServerTransport returns transport that will start an HTTP server

func NewStdioServerTransport

func NewStdioServerTransport(opts ...StdioServerTransportOption) ServerTransport

type StdioClientTransportOption

type StdioClientTransportOption func(*stdioClientTransport)

func WithStdioClientOptionEnv

func WithStdioClientOptionEnv(env ...string) StdioClientTransportOption

func WithStdioClientOptionLogger

func WithStdioClientOptionLogger(log pkg.Logger) StdioClientTransportOption

type StdioServerTransportOption

type StdioServerTransportOption func(*stdioServerTransport)

func WithStdioServerOptionLogger

func WithStdioServerOptionLogger(log pkg.Logger) StdioServerTransportOption

Jump to

Keyboard shortcuts

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