Class: Aikido::Zen::WorkerProcess::Agent::Server
- Inherits:
-
Object
- Object
- Aikido::Zen::WorkerProcess::Agent::Server
- Defined in:
- lib/aikido/zen/worker_process/agent/server.rb
Defined Under Namespace
Classes: RequestKind
Instance Method Summary collapse
- #calculate_rate_limits(route_data, ip, actor_data) ⇒ Object
- #close ⇒ Object
- #host ⇒ Object
-
#initialize(config: Aikido::Zen.config) ⇒ Server
constructor
A new instance of Server.
- #port ⇒ Object
- #send_collector_events(events_data) ⇒ Object
- #start ⇒ Object
- #started? ⇒ Boolean
- #stop ⇒ Object
- #updated_settings ⇒ Object
Constructor Details
#initialize(config: Aikido::Zen.config) ⇒ Server
Returns a new instance of Server.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 6 def initialize(config: Aikido::Zen.config) @config = config @rpc_server = Aikido::Zen::RPC::Server.new(Aikido::Zen.secret) @rpc_server.handle("ping") do |respond| respond.call(nil) end @rpc_server.handle("updated_settings") do |respond| respond.call(updated_settings) end @rpc_server.handle("send_collector_events") do |respond, events_data| respond.call(nil) send_collector_events(events_data) end @rpc_server.handle("calculate_rate_limits") do |respond, route_data, ip, actor_data| result = calculate_rate_limits(route_data, ip, actor_data) respond.call(result&.as_json) end end |
Instance Method Details
#calculate_rate_limits(route_data, ip, actor_data) ⇒ Object
81 82 83 84 85 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 81 def calculate_rate_limits(route_data, ip, actor_data) actor = Aikido::Zen::Actor.from_json(actor_data) if actor_data route = Aikido::Zen::Route.from_json(route_data) Aikido::Zen.rate_limiter.calculate_rate_limits(RequestKind.new(route, nil, ip, actor)) end |
#close ⇒ Object
42 43 44 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 42 def close @rpc_server.close end |
#host ⇒ Object
30 31 32 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 30 def host @rpc_server.host end |
#port ⇒ Object
34 35 36 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 34 def port @rpc_server.port end |
#send_collector_events(events_data) ⇒ Object
74 75 76 77 78 79 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 74 def send_collector_events(events_data) events_data.each do |event_data| event = Aikido::Zen::Collector::Event.from_json(event_data) Aikido::Zen.collector.add_event(event) end end |
#start ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 46 def start @config.logger.info("Starting RPC Server...") @rpc_server.start @started_at = Time.now.utc end |
#started? ⇒ Boolean
38 39 40 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 38 def started? !!@started_at end |
#stop ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/aikido/zen/worker_process/agent/server.rb', line 54 def stop @config.logger.info("Stopping RPC Server...") @rpc_server.stop @started_at = nil end |