Class: Yoda::Server::RootHandler
- Inherits:
-
Object
- Object
- Yoda::Server::RootHandler
show all
- Extended by:
- Forwardable
- Defined in:
- lib/yoda/server/root_handler.rb
Defined Under Namespace
Classes: NotImplementedMethod
Constant Summary
collapse
- NOT_INITIALIZED =
:not_initialized
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(writer:, scheduler: nil) ⇒ RootHandler
Returns a new instance of RootHandler.
21
22
23
24
25
|
# File 'lib/yoda/server/root_handler.rb', line 21
def initialize(writer:, scheduler: nil)
@scheduler = scheduler || Scheduler.new
@writer = writer
@future_map = Concurrent::Map.new
end
|
Instance Attribute Details
17
18
19
|
# File 'lib/yoda/server/root_handler.rb', line 17
def scheduler
@scheduler
end
|
14
15
16
|
# File 'lib/yoda/server/root_handler.rb', line 14
def writer
@writer
end
|
Instance Method Details
#cancel_all_requests ⇒ Object
65
66
67
|
# File 'lib/yoda/server/root_handler.rb', line 65
def cancel_all_requests
scheduler.cancel_all
end
|
#cancel_request(id) ⇒ Object
61
62
63
|
# File 'lib/yoda/server/root_handler.rb', line 61
def cancel_request(id)
scheduler.cancel(id)
end
|
#handle(id:, method:, params:) ⇒ Concurrent::Future?
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/yoda/server/root_handler.rb', line 31
def handle(id:, method:, params:)
Logger.trace("Request (#{id}): #{method}(#{params})")
if lifecycle_handler.handle?(method)
return write_response(id, lifecycle_handler.handle(method: method, params: params))
end
return write_response(id, build_error_response(NOT_INITIALIZED)) unless session
if provider = Providers.build_provider(notifier: notifier, session: session, method: method)
provide_async(provider: provider, id: id, method: method, params: params)
else
if id
write_response(id, build_error_response(NotImplementedMethod.new(method)))
else
Logger.instance.debug("A notification with a not implemented method (#{method}) received")
end
end
end
|
51
52
53
|
# File 'lib/yoda/server/root_handler.rb', line 51
def notifier
@notifier ||= Notifier.new(writer)
end
|
#wait_for_termination(timeout:) ⇒ Object
56
57
58
|
# File 'lib/yoda/server/root_handler.rb', line 56
def wait_for_termination(timeout:)
scheduler.wait_for_termination(timeout: timeout)
end
|