class EventStore::Cluster::LeaderStatus::Get

Public Class Methods

build(connect_http=nil) click to toggle source
# File lib/event_store/cluster/leader_status/get.rb, line 11
def self.build(connect_http=nil)
  instance = new

  GossipEndpoint::Get.configure instance, connect_http

  instance
end
call(*arguments) click to toggle source
# File lib/event_store/cluster/leader_status/get.rb, line 19
def self.call(*arguments)
  instance = build *arguments
  instance.()
end

Public Instance Methods

call() click to toggle source
# File lib/event_store/cluster/leader_status/get.rb, line 24
def call
  logger.trace { "Getting leader" }

  gossip_response = get_gossip_endpoint.()

  if gossip_response.nil?
    logger.info { "Get leader done; EventStore is non-clustered" }
    return nil
  end

  data = Data.new

  SetAttributes.(
    data,
    gossip_response.leader,
    copy: [
      { :external_tcp_ip => :tcp_ip_address },
      { :external_tcp_port => :tcp_port },
      { :external_http_ip => :http_ip_address },
      { :external_http_port => :http_port }
    ]
  )

  logger.info { "Get leader done (TCP: #{data.tcp_ip_address}:#{data.tcp_port}, HTTP: #{data.http_ip_address}:#{data.http_port})" }

  data
end