Posted by Philburt on Mon, 15 Mar 2010 10:52:25
During my experiments with the WoW Auction House, i've noticed that using QueryAuctionItems with the getAll attribute set as True, (and having eventtrace running on screen as well), the AuctionItemList_Update event sometimes takes quite a while to fire.
I'm pretty sure I'm doing everything correctly, ie: waiting for Query, MassQuery = CanSendAuctionQuery("list") to return a MassQuery value of 1 then performing the QueryAuctionItems("",0,80,0,0,0,0,false,0,true) command.
As I understand it, the AuctionItemList_Update event fires when the server-side is ready for you to start reading the individual auction items, but this often takes several minutes. I've noticed that the famed Auctioneer add-on also has the same problem, with a noticable delay of upto 30 seconds or so before the event fires.
Infact the only program I've seen that doesn't suffer from this delay is Blizzards own Auction House routine, but their code doesn't seem much different from mine.
Is it possible to re-submit the QueryAuctionItems command (with getAll set as true), if the AuctionItemList_Update event hasn't fired after say 30 seconds, or would the 15min cool-down limit still apply?
Posted by jnwhiteh on Mon, 15 Mar 2010 12:01:09
I don't know, to be completely honest with you. I don't, however, believe that the Blizzard Auction House ever uses the getAll parameter, so it wouldn't have the same issues that you have. I don't think re-submitting the query is the right answer.. since the event does eventually respond, no?
Posted by Philburt on Mon, 15 Mar 2010 12:54:51
Well - saying that the event eventually fires may not be totally true, because after a wait of two minutes or so, I've usually shut down the AH and started doing something else, so its possible that occasionally the event doesn't fire at all. I cant try this at the moment as I am at work and dont have WoW installed.
One thought that has come to mind though is if after say 30 seconds the event hasn't fired, checking the CanSendAuctionQuery("list") for a MassQuery value of 1 would possibly indicate that a getAll query could be done again without waiting for 15mins to pass.
This would mean the 15min limit is tied to the event firing (ie the AH data being avaible to be read) rather than the actual query. This doesn't seem totally right to me, but I'll write a small routine to test it later and get back with my results.
Thanks for your feedback
Ok - I'm home and have tried waiting upto a minute for the event to fire, and checked the value of MassQuery, which was 1 indicating that a whole AH read was possible. I then initiated another QueryAuctionItems command and was disconnected. This leads me to assume that the 15min limit is tied to the original QueryAuctionItems, and that once this is executed you have to wait 15mins, reguardless of how long the server takes to respond. Shame, but thats the way it seems to work.