Class: Chronos::Adapters::NetHttpTransport
- Inherits:
-
Object
- Object
- Chronos::Adapters::NetHttpTransport
- Defined in:
- lib/chronos/adapters/net_http_transport.rb
Overview
Net::HTTP implementation of the Chronos transport port.
Constant Summary collapse
- EVENT_PATH =
"/api/v1/events".freeze
Instance Method Summary collapse
- #close ⇒ Object
- #healthy? ⇒ Boolean
-
#initialize(config, logger = nil) ⇒ NetHttpTransport
constructor
A new instance of NetHttpTransport.
- #send_batch(events) ⇒ Object
- #send_event(event) ⇒ Object
Constructor Details
#initialize(config, logger = nil) ⇒ NetHttpTransport
Returns a new instance of NetHttpTransport.
24 25 26 27 28 29 30 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 24 def initialize(config, logger = nil) @config = config @logger = logger || Internal::SafeLogger.new(config.logger) @health_mutex = Mutex.new @healthy = true @closed = false end |
Instance Method Details
#close ⇒ Object
53 54 55 56 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 53 def close @health_mutex.synchronize { @closed = true } true end |
#healthy? ⇒ Boolean
49 50 51 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 49 def healthy? @health_mutex.synchronize { @healthy && !@closed } end |
#send_batch(events) ⇒ Object
45 46 47 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 45 def send_batch(events) Array(events).map { |event| send_event(event) } end |
#send_event(event) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 32 def send_event(event) return Ports::TransportResult.new(:closed) if closed? response = perform_request(event) result = classify(response) update_health(result.success?) result rescue StandardError => error update_health(false) @logger.warn("Chronos transport failed: #{error.class}") Ports::TransportResult.new(:network_error, :error => error.class.name) end |