Implement networkmessenger distributioning
This commit is contained in:
@@ -8,6 +8,112 @@ shared.NetworkMessenger = {}
|
||||
function shared.NetworkMessenger.Init()
|
||||
RegisterAddonMessagePrefix(Heimdall_Data.config.addonPrefix)
|
||||
|
||||
if not shared.networkMessenger then shared.networkMessenger = {} end
|
||||
if not shared.networkMessenger.queue then shared.networkMessenger.queue = {} end
|
||||
if not shared.networkMessenger.ticker then
|
||||
local function DoMessage()
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Processing network message queue", ModuleName))
|
||||
end
|
||||
if not Heimdall_Data.config.networkMessenger.enabled then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Module disabled, skipping network message processing", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
---@type Message
|
||||
local message = shared.networkMessenger.queue[1]
|
||||
if not message then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Network message queue empty", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
if not message.message or message.message == "" then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Invalid network message: empty content", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
if not message.channel or message.channel == "" then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Invalid network message: no channel specified", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
table.remove(shared.networkMessenger.queue, 1)
|
||||
if not message.message or message.message == "" then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Skipping empty network message", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
if not message.channel or message.channel == "" then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Skipping network message with no channel", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
if not message.data or message.data == "" then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Skipping network message with no data", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] Sending network message: '%s' to %s:%s", ModuleName, message.message,
|
||||
message.channel,
|
||||
message.data))
|
||||
end
|
||||
local payload = string.format("%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
|
||||
if #shared.networkNodes == 0 then
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
print(string.format("[%s] No network nodes found, wtf????", ModuleName))
|
||||
end
|
||||
return
|
||||
end
|
||||
local target = shared.networkNodes[1]
|
||||
SendAddonMessage(Heimdall_Data.config.addonPrefix, payload, "WHISPER", target)
|
||||
end
|
||||
local function Tick()
|
||||
if Heimdall_Data.config.networkMessenger.debug then
|
||||
local queueSize = #shared.networkMessenger.queue
|
||||
print(string.format("[%s] Queue check - Network messages pending: %d", ModuleName, queueSize))
|
||||
end
|
||||
DoMessage()
|
||||
shared.networkMessenger.ticker = C_Timer.NewTimer(Heimdall_Data.config.networkMessenger.interval, Tick, 1)
|
||||
end
|
||||
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)
|
||||
|
||||
local addonMsgFrame = CreateFrame("Frame")
|
||||
addonMsgFrame:RegisterEvent("CHAT_MSG_ADDON")
|
||||
addonMsgFrame:SetScript("OnEvent", function(self, event, prefix, message, channel, source)
|
||||
|
||||
Reference in New Issue
Block a user