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
- REMOTE_CONFIGURATION_HEADER =
"X-Chronos-Remote-Configuration".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.
26 27 28 29 30 31 32 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 26 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
55 56 57 58 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 55 def close @health_mutex.synchronize { @closed = true } true end |
#healthy? ⇒ Boolean
51 52 53 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 51 def healthy? @health_mutex.synchronize { @healthy && !@closed } end |
#send_batch(events) ⇒ Object
47 48 49 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 47 def send_batch(events) Array(events).map { |event| send_event(event) } end |
#send_event(event) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/chronos/adapters/net_http_transport.rb', line 34 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 |