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