class Aggro::Node

Public: Represents an aggro server node.

Public Instance Methods

client() click to toggle source
# File lib/aggro/node.rb, line 4
def client
  @client ||= Aggro::Client.new(endpoint)
end
publisher_endpoint() click to toggle source
# File lib/aggro/node.rb, line 8
def publisher_endpoint
  @publisher_endpoint ||= discover_publisher_endpoint
end
to_s() click to toggle source
# File lib/aggro/node.rb, line 12
def to_s
  id
end

Private Instance Methods

discover_publisher_endpoint() click to toggle source
# File lib/aggro/node.rb, line 18
def discover_publisher_endpoint
  message = Message::PublisherEndpointInquiry.new(Aggro.local_node.id)
  response = client.post(message)

  if response.is_a? Message::Endpoint
    port = URI.parse(response.endpoint).port

    URI.parse(endpoint).tap { |uri| uri.port = port }.to_s
  else
    fail "Could not discover publisher endpoint for #{id}"
  end
end