Class: Salopulse::Transport
- Inherits:
-
Object
- Object
- Salopulse::Transport
- Defined in:
- lib/salopulse/transport.rb
Defined Under Namespace
Classes: Response
Constant Summary collapse
- MAX_RETRIES =
3- BACKOFF_BASE =
0.5
Instance Method Summary collapse
-
#initialize(dsn:, sdk_version:, logger:, open_timeout: 5, read_timeout: 10) ⇒ Transport
constructor
A new instance of Transport.
- #send_batch(events) ⇒ Object
Constructor Details
#initialize(dsn:, sdk_version:, logger:, open_timeout: 5, read_timeout: 10) ⇒ Transport
Returns a new instance of Transport.
13 14 15 16 17 18 19 20 |
# File 'lib/salopulse/transport.rb', line 13 def initialize(dsn:, sdk_version:, logger:, open_timeout: 5, read_timeout: 10) @dsn = dsn @sdk_version = sdk_version @logger = logger @uri = URI.parse(dsn.ingest_url) @open_timeout = open_timeout @read_timeout = read_timeout end |
Instance Method Details
#send_batch(events) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/salopulse/transport.rb', line 22 def send_batch(events) return true if events.nil? || events.empty? body = JSON.dump(events: events) RequestContext.with_suppression do attempt = 0 loop do response = post(body) code = response.code.to_i return true if success?(code) return false if non_retryable?(code) attempt += 1 if attempt >= MAX_RETRIES @logger.warn("[Salopulse] giving up after #{attempt} attempts, last code=#{code}") return false end sleep(BACKOFF_BASE * (2**(attempt - 1))) end end end |