Sha256: e905b8eff7f9b849172c654aae0635e1174d939e0dd4994145ba341ec16e6654

Contents?: true

Size: 824 Bytes

Versions: 1

Compression:

Stored size: 824 Bytes

Contents

# frozen_string_literal: true

require_relative 'connection'

module Datadog
  class Statsd
    class UDSConnection < Connection
      class BadSocketError < StandardError; end

      # DogStatsd unix socket path
      attr_reader :socket_path

      def initialize(socket_path, logger, telemetry)
        super(telemetry)
        @socket_path = socket_path
        @logger = logger
      end

      private

      def connect
        socket = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM)
        socket.connect(Socket.pack_sockaddr_un(@socket_path))
        socket
      end

      def send_message(message)
        socket.sendmsg_nonblock(message)
      rescue Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ENOENT => e
        @socket = nil
        raise BadSocketError, "#{e.class}: #{e}"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dogstatsd-ruby-4.7.0 lib/datadog/statsd/uds_connection.rb