Hmm. lovely addon, blizzard should add something like this by default. CJ 07:57, 5 October 2006 (EDT)
- Yes. Or at least tell me what the actual limits are when I ask :-P -- (T) 11:10, 5 October 2006 (EDT)
Bug fix and request for tweakability Edit
I like your library and use it for one of my guild addon I keep up to date, but in the last version there is a little bug in ChatThrottleStats on the line 26 who need to be:
for _,Prio in pairs(ChatThrottleLib.Prio) do
for _,Prio in ChatThrottleLib.Prio do
to work correctly.
Plus in ChatThrottleLib I have understood that the CPS and BURST value are from the lowest common denominator from experience of some servers. Could I suggest you some modification to have the possibility to change them from outside ChatThrottleLib to adapt the value by the powerusers (for the risk to themself to be disconected) ?
here my modifications:
file: ChatThrottleLib.lua 031: --local MAX_CPS = 800 034: --local BURST = 4000 051: ChatThrottleLib.MAX_CPS = 800; 052: ChatThrottleLib.BURST = 4000; 254: local newavail = ChatThrottleLib.MAX_CPS * (now - self.LastAvailUpdate) 258: self.avail = math_min(self.avail + (newavail*0.1), ChatThrottleLib.MAX_CPS*0.5) 261: self.avail = math_min(ChatThrottleLib.MAX_CPS, self.avail + newavail) 264: self.avail = math_min(ChatThrottleLib.BURST, self.avail + newavail) 268: self.avail = math_max(self.avail, 0-(ChatThrottleLib.MAX_CPS*2))
It is a modification I have done on your addon, but to be sure that this modified version is used everywhere I need to always have a bigger version number than yours to have all the others addon use my version :(. One other mod I will try to do is to save those 2 values per server. But first I need to learn a little bit more about LUA programming and WoW interface programming :)
- I've moved all the constant values from locals to "ChatThrottleLib." member variables in the latest version. Note that ChatThrottleLib itself cannot really keep these values saved, as it is an embeddable library. It will have to be up to (one of) the embedding addon(s) to make the values tweakable. -- (T) 07:28, 9 April 2007 (EDT)
Is there a list of addons that are known to use this library ? -06:37, 6 April 2007 (EDT)
- Not to my knowledge. All addons using AceComm / Telepathy for comms will be using it implicitly though. I also know that CraftList uses it because I put it in there :-) -- (T) 08:32, 8 April 2007 (EDT)
New tests confirm it has nothing to do with buffer sizes at the server Edit
(by (T)) » So... I got this bright idea that I could create a 100% safe disconnect guard by injecting a "ping" in the stream every so often and watch for returned pongs, and hence know for sure that the server buffer had despooled. (Except using a moving window with several pings in flight etc... standard network protocol stuff, no need to expound on this.)
So I wrote this little test:
MY_Frame = MY_Frame or CreateFrame("Frame") local function print(msg) (CURRENT_CHAT_FRAME or DEFAULT_CHAT_FRAME):AddMessage(msg) end local BUFSIZE = 1000 local me = UnitName("player") local sent=0 local rcvd=0 local pad = strrep("AAAAAAAAAA",20) local function myfunc(this,event,arg1,arg2,arg3) if arg1=="MYTEST" then local n=tonumber(strmatch(arg2,"(%d+)")) rcvd=n print("<"..rcvd) end end MY_Frame:SetScript("OnEvent", myfunc) MY_Frame:RegisterEvent("CHAT_MSG_ADDON") local function myonupdate(this) if sent>200000 then this:Hide() return else if sent-rcvd<BUFSIZE then local msg=format("%08d", sent)..pad sent=sent+#msg+40 SendAddonMessage("MYTEST", msg, "WHISPER", me) print(">"..sent) end end end MY_Frame:SetScript("OnUpdate", myonupdate) MY_Frame:Show()
Now... there's no way in h*ll the buffer size on the receiving side is as small as 1000 bytes. Yet this disconnects me.
I tried as small as 500 bytes, and THAT worked. But given my average RTT and the message size used, that simply amounts to the ~3000 CPS that I'd already established earlier that my server (Bloodhoof EU) will handle.
So.. yeah.. I guess there's a hardcoded check serverside for clients that transmit "too much data". And we don't get to know what that limit is :-/
-- (T) 01:17, 29 April 2008 (UTC)