Class: Mayu::Metrics::Reporter::Client
- Inherits:
-
Object
- Object
- Mayu::Metrics::Reporter::Client
- Extended by:
- T::Sig
- Defined in:
- lib/mayu/metrics/reporter.rb
Class Method Summary collapse
- .connect(collector_endpoint, &block) ⇒ Object
- .connect_and_sync(collector_endpoint:, data_store:, interval: 1, task: Async::Task.current) ⇒ Object
Instance Method Summary collapse
-
#initialize(peer) ⇒ Client
constructor
A new instance of Client.
- #sync(data_store, task: Async::Task.current) ⇒ Object
Constructor Details
#initialize(peer) ⇒ Client
75 76 77 78 |
# File 'lib/mayu/metrics/reporter.rb', line 75 def initialize(peer) wrapper = Wrapper.new @packer = T.let(wrapper.packer(peer), MessagePack::Packer) end |
Class Method Details
.connect(collector_endpoint, &block) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/mayu/metrics/reporter.rb', line 37 def self.connect(collector_endpoint, &block) Console.logger.info( self, "Connecting to #{File.expand_path(collector_endpoint.path)}" ) collector_endpoint.connect { |peer| yield new(peer) } end |
.connect_and_sync(collector_endpoint:, data_store:, interval: 1, task: Async::Task.current) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/mayu/metrics/reporter.rb', line 54 def self.connect_and_sync( collector_endpoint:, data_store:, interval: 1, task: Async::Task.current ) task.async do connect(collector_endpoint) do |client| loop do client.sync(data_store) sleep(interval) end end rescue Errno::EPIPE Console.logger.error(self, "Broken pipe") rescue Errno::ECONNREFUSED Console.logger.error(self, "Connection refused") end end |
Instance Method Details
#sync(data_store, task: Async::Task.current) ⇒ Object
81 82 83 |
# File 'lib/mayu/metrics/reporter.rb', line 81 def sync(data_store, task: Async::Task.current) send(:store, data_store.store) end |