Class: VectorMCP::Transport::SSE::MessageHandler
- Inherits:
-
Object
- Object
- VectorMCP::Transport::SSE::MessageHandler
- Defined in:
- lib/vector_mcp/transport/sse/message_handler.rb
Overview
Handles JSON-RPC message processing for POST requests. Processes incoming messages and sends responses via SSE streams.
Instance Method Summary collapse
-
#handle_post_message(env, client_conn) ⇒ Array
Handles a POST message request from a client.
-
#initialize(server, session, logger) ⇒ MessageHandler
constructor
Initializes a new message handler.
Constructor Details
#initialize(server, session, logger) ⇒ MessageHandler
Initializes a new message handler.
16 17 18 19 20 |
# File 'lib/vector_mcp/transport/sse/message_handler.rb', line 16 def initialize(server, session, logger) @server = server @session = session @logger = logger end |
Instance Method Details
#handle_post_message(env, client_conn) ⇒ Array
Handles a POST message request from a client.
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/vector_mcp/transport/sse/message_handler.rb', line 27 def (env, client_conn) request_body = read_request_body(env) return error_response(nil, -32_600, "Request body is empty") if request_body.nil? || request_body.empty? = (request_body, client_conn) return if .is_a?(Array) # Error response (, client_conn) rescue VectorMCP::ProtocolError => e @logger.error { "Protocol error for client #{client_conn.session_id}: #{e.}" } request_id = e.request_id || &.dig("id") enqueue_error_response(client_conn, request_id, e.code, e., e.details) error_response(request_id, e.code, e., e.details) rescue StandardError => e @logger.error { "Unexpected error for client #{client_conn.session_id}: #{e.}\n#{e.backtrace.join("\n")}" } request_id = &.dig("id") enqueue_error_response(client_conn, request_id, -32_603, "Internal server error") error_response(request_id, -32_603, "Internal server error") end |