class Fluent::DatadogOutput::DatadogTCPClient
TCP Datadog client
Public Class Methods
new(logger, use_ssl, no_ssl_validation, host, ssl_port, port)
click to toggle source
# File lib/fluent/plugin/out_datadog.rb, line 350 def initialize(logger, use_ssl, no_ssl_validation, host, ssl_port, port) @logger = logger @use_ssl = use_ssl @no_ssl_validation = no_ssl_validation @host = host @port = use_ssl ? ssl_port : port end
Public Instance Methods
close()
click to toggle source
# File lib/fluent/plugin/out_datadog.rb, line 386 def close @socket.close rescue nil end
connect()
click to toggle source
# File lib/fluent/plugin/out_datadog.rb, line 358 def connect if @use_ssl @logger.info("Starting SSL connection #{@host} #{@port}") socket = TCPSocket.new @host, @port ssl_context = OpenSSL::SSL::SSLContext.new if @no_ssl_validation ssl_context.set_params({:verify_mode => OpenSSL::SSL::VERIFY_NONE}) end ssl_context = OpenSSL::SSL::SSLSocket.new socket, ssl_context ssl_context.connect ssl_context else @logger.info("Starting plaintext connection #{@host} #{@port}") TCPSocket.new @host, @port end end
send(payload)
click to toggle source
# File lib/fluent/plugin/out_datadog.rb, line 375 def send(payload) begin @socket ||= connect @socket.puts(payload) rescue => e @socket.close rescue nil @socket = nil raise RetryableError.new "Unable to send payload: #{e.message}." end end