diff Comm.lua @ 86:22b37c800bc4

Database and comm versioning
author John@Yosemite-PC
date Sun, 15 Apr 2012 14:42:14 -0400
parents 9e5b0a2368ad
children 5ade79caeece
line wrap: on
line diff
--- a/Comm.lua	Sat Apr 14 10:12:06 2012 -0400
+++ b/Comm.lua	Sun Apr 15 14:42:14 2012 -0400
@@ -25,7 +25,7 @@
 
 local function SendMessage(str)
     --commlib:SendCommMessage("BSKADDON",str,"GUILD")
-    commlib:SendCommMessage("BSKADDON",str,"RAID")
+    commlib:SendCommMessage("BSKADDON"..commversion,str,"RAID")
 end
 
 local function Send(handler,message)
@@ -90,8 +90,29 @@
     Comm[packet[1]](Comm,packet[2],sender,isloop)
 end
 
+alertlist = {}
+local function OnOlderCommReceived(prefix, message, distribution, sender)
+    if not alertlist[sender] then
+        printf("Received communication from %s, who is using an older version of the addon; ignoring",sender)
+        alertlist[sender]=true
+    end
+end
+
+local function OnNewerCommReceived(prefix, message, distribution, sender)
+    if not alertlist[sender] then
+        printf("Received communication from %s, who is using a newer version of the addon; ignoring",sender)
+        alertlist[sender]=true
+    end
+end
+
 function InitializeComm()
-   commlib:RegisterComm("BSKADDON",OnCommReceived)
+    for i = 0,commversion-1 do
+        commlib:RegisterComm("BSKADDON"..i,OnOlderCommReceived)
+    end
+    commlib:RegisterComm("BSKADDON"..commversion,OnCommReceived)
+    for i = commversion+1,commversion+5 do -- some sensible number
+        commlib:RegisterComm("BSKADDON"..i,OnNewerCommReceived)
+    end
 end
 
 function DeinitializeComm()