Implement distributed messenger
This commit is contained in:
@@ -31,6 +31,7 @@ function shared.Network.Init()
|
||||
end
|
||||
|
||||
shared.networkNodes = {}
|
||||
if false then shared.networkNodes[#shared.networkNodes+1] = UnitName("player") end
|
||||
for _, player in ipairs(Heimdall_Data.config.network.members) do
|
||||
if friends[player] then
|
||||
shared.networkNodes[#shared.networkNodes + 1] = player
|
||||
|
@@ -67,7 +67,7 @@ function shared.NetworkMessenger.Init()
|
||||
message.channel,
|
||||
message.data))
|
||||
end
|
||||
local payload = string.format("%s|%s|%s", message.message, message.channel, message.data)
|
||||
local payload = string.format("dmessage|%s|%s|%s", message.message, message.channel, message.data)
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Payload: %s", ModuleName, payload))
|
||||
end
|
||||
@@ -91,29 +91,10 @@ function shared.NetworkMessenger.Init()
|
||||
Tick()
|
||||
end
|
||||
|
||||
local testMessage = {
|
||||
channel = "WHISPER",
|
||||
message = "Hi, mom!",
|
||||
data = "Secundus"
|
||||
}
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
table.insert(shared.networkMessenger.queue, testMessage)
|
||||
-- If we are the leader then we delegate messages (dmessage)
|
||||
-- If we get a "message" command from leader then we send the message
|
||||
|
||||
local nextIdx = 1
|
||||
local addonMsgFrame = CreateFrame("Frame")
|
||||
addonMsgFrame:RegisterEvent("CHAT_MSG_ADDON")
|
||||
addonMsgFrame:SetScript("OnEvent", function(self, event, prefix, message, channel, source)
|
||||
@@ -163,6 +144,22 @@ function shared.NetworkMessenger.Init()
|
||||
data = target
|
||||
}
|
||||
table.insert(shared.messenger.queue, msg)
|
||||
elseif command == "dmessage" then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Received dmessage command", ModuleName))
|
||||
end
|
||||
parts[1] = "message"
|
||||
local message = table.concat(parts, "|")
|
||||
|
||||
if nextIdx > #shared.networkNodes then
|
||||
nextIdx = 1
|
||||
end
|
||||
local recipient = shared.networkNodes[nextIdx]
|
||||
nextIdx = nextIdx + 1
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Sending message %s to %s", ModuleName, message, recipient))
|
||||
end
|
||||
SendAddonMessage(Heimdall_Data.config.addonPrefix, message, "WHISPER", recipient)
|
||||
end
|
||||
end)
|
||||
|
||||
|
Reference in New Issue
Block a user