mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 03:40:00 +08:00
33 lines
642 B
Ruby
33 lines
642 B
Ruby
|
class MessageBusDiags
|
||
|
|
||
|
@host_info = {}
|
||
|
|
||
|
def self.my_id
|
||
|
@my_id ||= "#{`hostname`}-#{Process.pid}"
|
||
|
end
|
||
|
|
||
|
def self.seen_host(name)
|
||
|
@host_info[name] = DateTime.now
|
||
|
end
|
||
|
|
||
|
def self.establish_peer_names
|
||
|
MessageBus.publish "/server-name", {channel: "/server-name-reply/#{my_id}"}
|
||
|
end
|
||
|
|
||
|
def self.seen_hosts
|
||
|
@host_info
|
||
|
end
|
||
|
|
||
|
unless @subscribed
|
||
|
|
||
|
MessageBus.subscribe "/server-name-reply/#{my_id}" do |msg|
|
||
|
MessageBusDiags.seen_host(msg.data)
|
||
|
end
|
||
|
|
||
|
MessageBus.subscribe "/server-name" do |msg|
|
||
|
MessageBus.publish msg.data["channel"], MessageBusDiags.my_id
|
||
|
end
|
||
|
@subscribed = true
|
||
|
end
|
||
|
end
|