Class: A2A::Server::Middleware::InMemoryStore
- Inherits:
-
Object
- Object
- A2A::Server::Middleware::InMemoryStore
- Defined in:
- lib/a2a/server/middleware/rate_limit_middleware.rb
Overview
In-memory storage for rate limiting
Instance Method Summary collapse
- #clear ⇒ Object
- #get(key) ⇒ Object
- #get_list(key) ⇒ Object
- #increment(key, expires_at: nil) ⇒ Object
-
#initialize ⇒ InMemoryStore
constructor
A new instance of InMemoryStore.
- #set(key, value, expires_at: nil) ⇒ Object
- #set_list(key, list, expires_at: nil) ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize ⇒ InMemoryStore
Returns a new instance of InMemoryStore.
270 271 272 273 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 270 def initialize @data = {} @mutex = Mutex.new end |
Instance Method Details
#clear ⇒ Object
322 323 324 325 326 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 322 def clear @mutex.synchronize do @data.clear end end |
#get(key) ⇒ Object
275 276 277 278 279 280 281 282 283 284 285 286 287 288 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 275 def get(key) @mutex.synchronize do entry = @data[key] return nil unless entry # Check expiration if entry[:expires_at] && Time.now.to_f > entry[:expires_at] @data.delete(key) return nil end entry[:value] end end |
#get_list(key) ⇒ Object
314 315 316 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 314 def get_list(key) get(key) end |
#increment(key, expires_at: nil) ⇒ Object
299 300 301 302 303 304 305 306 307 308 309 310 311 312 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 299 def increment(key, expires_at: nil) @mutex.synchronize do entry = @data[key] || { value: 0, expires_at: expires_at } # Check expiration entry = { value: 0, expires_at: expires_at } if entry[:expires_at] && Time.now.to_f > entry[:expires_at] entry[:value] += 1 entry[:expires_at] = expires_at if expires_at @data[key] = entry entry[:value] end end |
#set(key, value, expires_at: nil) ⇒ Object
290 291 292 293 294 295 296 297 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 290 def set(key, value, expires_at: nil) @mutex.synchronize do @data[key] = { value: value, expires_at: expires_at } end end |
#set_list(key, list, expires_at: nil) ⇒ Object
318 319 320 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 318 def set_list(key, list, expires_at: nil) set(key, list, expires_at: expires_at) end |
#size ⇒ Object
328 329 330 331 332 |
# File 'lib/a2a/server/middleware/rate_limit_middleware.rb', line 328 def size @mutex.synchronize do @data.size end end |