Class: ActionMCP::Server::BaseSessionStore
- Inherits:
-
Object
- Object
- ActionMCP::Server::BaseSessionStore
- Includes:
- SessionStore
- Defined in:
- lib/action_mcp/server/base_session_store.rb
Direct Known Subclasses
Instance Method Summary collapse
- #cleanup_expired_sessions(older_than: 24.hours.ago) ⇒ Object
- #clear_all ⇒ Object
- #create_session(session_id = nil, attributes = {}) ⇒ Object
- #delete_session(session_id) ⇒ Object
- #find_sessions(criteria = {}) ⇒ Object
-
#initialize ⇒ BaseSessionStore
constructor
A new instance of BaseSessionStore.
- #load_session(session_id) ⇒ Object
- #save_session(session) ⇒ Object
- #session_count ⇒ Object
- #session_exists?(session_id) ⇒ Boolean
Constructor Details
#initialize ⇒ BaseSessionStore
Returns a new instance of BaseSessionStore.
8 9 10 |
# File 'lib/action_mcp/server/base_session_store.rb', line 8 def initialize @sessions = Concurrent::Hash.new end |
Instance Method Details
#cleanup_expired_sessions(older_than: 24.hours.ago) ⇒ Object
70 71 72 73 74 |
# File 'lib/action_mcp/server/base_session_store.rb', line 70 def cleanup_expired_sessions(older_than: 24.hours.ago) expired_ids = @sessions.select { |_id, session| session.updated_at < older_than }.keys expired_ids.each { |id| @sessions.delete(id) } expired_ids.count end |
#clear_all ⇒ Object
76 77 78 |
# File 'lib/action_mcp/server/base_session_store.rb', line 76 def clear_all @sessions.clear end |
#create_session(session_id = nil, attributes = {}) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/action_mcp/server/base_session_store.rb', line 12 def create_session(session_id = nil, attributes = {}) session_id ||= SecureRandom.hex(6) session_data = { id: session_id, status: "pre_initialize", initialized: false, role: "server", messages_count: 0, created_at: Time.current, updated_at: Time.current }.merge(attributes) session = BaseSession.new(session_data, self) if session.role == "server" session.server_info = { name: ActionMCP.configuration.name, version: ActionMCP.configuration.version } session.server_capabilities = ActionMCP.configuration.capabilities session.tool_registry = ActionMCP.configuration.filtered_tools.map(&:name) session.prompt_registry = ActionMCP.configuration.filtered_prompts.map(&:name) session.resource_registry = ActionMCP.configuration.filtered_resources.map(&:name) end @sessions[session_id] = session session end |
#delete_session(session_id) ⇒ Object
53 54 55 |
# File 'lib/action_mcp/server/base_session_store.rb', line 53 def delete_session(session_id) @sessions.delete(session_id) end |
#find_sessions(criteria = {}) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/action_mcp/server/base_session_store.rb', line 61 def find_sessions(criteria = {}) sessions = @sessions.values sessions = sessions.select { |s| s.status == criteria[:status] } if criteria[:status] sessions = sessions.select { |s| s.role == criteria[:role] } if criteria[:role] sessions end |
#load_session(session_id) ⇒ Object
43 44 45 46 47 |
# File 'lib/action_mcp/server/base_session_store.rb', line 43 def load_session(session_id) session = @sessions[session_id] session&.instance_variable_set(:@new_record, false) session end |
#save_session(session) ⇒ Object
49 50 51 |
# File 'lib/action_mcp/server/base_session_store.rb', line 49 def save_session(session) @sessions[session.id] = session end |
#session_count ⇒ Object
80 81 82 |
# File 'lib/action_mcp/server/base_session_store.rb', line 80 def session_count @sessions.size end |
#session_exists?(session_id) ⇒ Boolean
57 58 59 |
# File 'lib/action_mcp/server/base_session_store.rb', line 57 def session_exists?(session_id) @sessions.key?(session_id) end |