Sha256: f6c8fd8649dcf8bda3f73bbf3d56b92431f84a0e93876b19d0f298c43a9b6977

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

require "harmoniser/connection"

module Harmoniser
  module Connectable
    MUTEX = Mutex.new

    def connection_opts
      @connection_opts ||= Connection::DEFAULT_CONNECTION_OPTS
        .merge({
          logger: Harmoniser.logger,
          recovery_attempt_started: proc {
            stringified_connection = connection.to_s
            Harmoniser.logger.info("Recovery attempt started: connection = `#{stringified_connection}`")
          },
          recovery_completed: proc {
            stringified_connection = connection.to_s
            Harmoniser.logger.info("Recovery completed: connection = `#{stringified_connection}`")
          }
        })
    end

    def connection_opts=(opts)
      raise TypeError, "opts must be a Hash object" unless opts.is_a?(Hash)

      @connection_opts = connection_opts.merge(opts)
    end

    def connection
      MUTEX.synchronize do
        @connection ||= Connection.new(connection_opts)
        @connection.start unless @connection.open? || @connection.recovering_from_network_failure?
        @connection
      end
    end

    def connection?
      !!defined?(@connection)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
harmoniser-0.10.0 lib/harmoniser/connectable.rb