Class: Datadog::Statsd::SingleThreadSender

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/statsd/single_thread_sender.rb

Overview

The SingleThreadSender is a sender synchronously buffering messages in a ‘MessageBuffer`. It is using current Process.PID to check it is the result of a recent fork and it is reseting the MessageBuffer if that’s the case.

Instance Method Summary collapse

Constructor Details

#initialize(message_buffer, logger: nil) ⇒ SingleThreadSender

Returns a new instance of SingleThreadSender.



10
11
12
13
14
15
16
# File 'lib/datadog/statsd/single_thread_sender.rb', line 10

def initialize(message_buffer, logger: nil)
  @message_buffer = message_buffer
  @logger = logger
  @mx = Mutex.new
  # store the pid for which this sender has been created
  update_fork_pid
end

Instance Method Details

#add(message) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/datadog/statsd/single_thread_sender.rb', line 18

def add(message)
  @mx.synchronize {
    # we have just forked, meaning we have messages in the buffer that we should
    # not send, they belong to the parent process, let's clear the buffer.
    if forked?
      @message_buffer.reset
      update_fork_pid
    end
    @message_buffer.add(message)
  }
end

#flushObject



30
31
32
33
34
# File 'lib/datadog/statsd/single_thread_sender.rb', line 30

def flush(*)
  @mx.synchronize {
    @message_buffer.flush()
  }
end

#rendez_vousObject

Compatibility with ‘Sender`



45
46
# File 'lib/datadog/statsd/single_thread_sender.rb', line 45

def rendez_vous()
end

#startObject

Compatibility with ‘Sender`



37
38
# File 'lib/datadog/statsd/single_thread_sender.rb', line 37

def start()
end

#stopObject

Compatibility with ‘Sender`



41
42
# File 'lib/datadog/statsd/single_thread_sender.rb', line 41

def stop()
end