AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
AuctionHouseWorkerThread Class Reference

#include "AuctionHouseSearcher.h"

Public Member Functions

 AuctionHouseWorkerThread (ProducerConsumerQueue< AuctionSearcherRequest * > *requestQueue, MPSCQueue< AuctionSearcherResponse > *responseQueue)
 
void Stop ()
 
void AddAuctionSearchUpdateToQueue (std::shared_ptr< AuctionSearcherUpdate > const auctionSearchUpdate)
 

Private Member Functions

void Run ()
 
void ProcessSearchUpdates ()
 
void SearchUpdateAdd (AuctionSearchAdd const &auctionAdd)
 
void SearchUpdateRemove (AuctionSearchRemove const &auctionRemove)
 
void SearchUpdateBid (AuctionSearchUpdateBid const &auctionUpdateBid)
 
void ProcessSearchRequests ()
 
void SearchListRequest (AuctionSearchListRequest const &searchListRequest)
 
void SearchOwnerListRequest (AuctionSearchOwnerListRequest const &searchOwnerListRequest)
 
void SearchBidderListRequest (AuctionSearchBidderListRequest const &searchBidderListRequest)
 
void BuildListAuctionItems (AuctionSearchListRequest const &searchRequest, SortableAuctionEntriesList &auctionEntries, SearchableAuctionEntriesMap const &auctionMap) const
 
SearchableAuctionEntriesMapGetSearchableAuctionMap (AuctionHouseFaction faction)
 

Private Attributes

SearchableAuctionEntriesMap _searchableAuctionMap [MAX_AUCTION_HOUSE_FACTIONS]
 
LockedQueue< std::shared_ptr< AuctionSearcherUpdate > > _auctionUpdatesQueue
 
ProducerConsumerQueue< AuctionSearcherRequest * > * _requestQueue
 
MPSCQueue< AuctionSearcherResponse > * _responseQueue
 
std::thread _workerThread
 
std::atomic< bool > _stopped
 

Detailed Description

Constructor & Destructor Documentation

◆ AuctionHouseWorkerThread()

AuctionHouseWorkerThread::AuctionHouseWorkerThread ( ProducerConsumerQueue< AuctionSearcherRequest * > *  requestQueue,
MPSCQueue< AuctionSearcherResponse > *  responseQueue 
)
26{
27 _workerThread = std::thread(&AuctionHouseWorkerThread::Run, this);
28 _requestQueue = requestQueue;
29 _responseQueue = responseQueue;
30 _stopped = false;
31}
MPSCQueue< AuctionSearcherResponse > * _responseQueue
Definition AuctionHouseSearcher.h:273
void Run()
Definition AuctionHouseSearcher.cpp:44
ProducerConsumerQueue< AuctionSearcherRequest * > * _requestQueue
Definition AuctionHouseSearcher.h:272
std::thread _workerThread
Definition AuctionHouseSearcher.h:275
std::atomic< bool > _stopped
Definition AuctionHouseSearcher.h:276

References _requestQueue, _responseQueue, _stopped, _workerThread, and Run().

Member Function Documentation

◆ AddAuctionSearchUpdateToQueue()

void AuctionHouseWorkerThread::AddAuctionSearchUpdateToQueue ( std::shared_ptr< AuctionSearcherUpdate > const  auctionSearchUpdate)
40{
41 _auctionUpdatesQueue.add(auctionSearchUpdate);
42}
LockedQueue< std::shared_ptr< AuctionSearcherUpdate > > _auctionUpdatesQueue
Definition AuctionHouseSearcher.h:270
void add(const T &item)
Adds an item to the back of the queue.
Definition LockedQueue.h:52

References _auctionUpdatesQueue, and LockedQueue< T, StorageType >::add().

◆ BuildListAuctionItems()

void AuctionHouseWorkerThread::BuildListAuctionItems ( AuctionSearchListRequest const &  searchRequest,
SortableAuctionEntriesList auctionEntries,
SearchableAuctionEntriesMap const &  auctionMap 
) const
private
278{
279 // pussywizard: optimization, this is a simplified case for the default search state (no filters)
280 if (searchRequest.searchInfo.itemClass == 0xffffffff && searchRequest.searchInfo.itemSubClass == 0xffffffff
281 && searchRequest.searchInfo.inventoryType == 0xffffffff && searchRequest.searchInfo.quality == 0xffffffff
282 && searchRequest.searchInfo.levelmin == 0x00 && searchRequest.searchInfo.levelmax == 0x00
283 && searchRequest.searchInfo.usable == 0x00 && searchRequest.searchInfo.wsearchedname.empty())
284 {
285 for (auto const& pair : auctionMap)
286 auctionEntries.push_back(pair.second.get());
287
288 return;
289 }
290
291 for (auto const& pair : auctionMap)
292 {
293 std::shared_ptr<SearchableAuctionEntry> const& Aentry = pair.second;
294 SearchableAuctionEntryItem const& Aitem = Aentry->item;
295 ItemTemplate const* proto = Aitem.itemTemplate;
296
297 if (searchRequest.searchInfo.itemClass != 0xffffffff && proto->Class != searchRequest.searchInfo.itemClass)
298 continue;
299
300 if (searchRequest.searchInfo.itemSubClass != 0xffffffff && proto->SubClass != searchRequest.searchInfo.itemSubClass)
301 continue;
302
303 if (searchRequest.searchInfo.inventoryType != 0xffffffff && proto->InventoryType != searchRequest.searchInfo.inventoryType)
304 {
305 // xinef: exception, robes are counted as chests
306 if (searchRequest.searchInfo.inventoryType != INVTYPE_CHEST || proto->InventoryType != INVTYPE_ROBE)
307 continue;
308 }
309
310 if (searchRequest.searchInfo.quality != 0xffffffff && proto->Quality < searchRequest.searchInfo.quality)
311 continue;
312
313 if (searchRequest.searchInfo.levelmin != 0x00 && (proto->RequiredLevel < searchRequest.searchInfo.levelmin
314 || (searchRequest.searchInfo.levelmax != 0x00 && proto->RequiredLevel > searchRequest.searchInfo.levelmax)))
315 {
316 continue;
317 }
318
319 if (searchRequest.searchInfo.usable != 0x00)
320 {
321 if (!searchRequest.playerInfo.usablePlayerInfo.value().PlayerCanUseItem(proto))
322 continue;
323 }
324
325 // Allow search by suffix (ie: of the Monkey) or partial name (ie: Monkey)
326 // No need to do any of this if no search term was entered
327 if (!searchRequest.searchInfo.wsearchedname.empty())
328 {
329 if (Aitem.itemName[searchRequest.playerInfo.loc_idx].find(searchRequest.searchInfo.wsearchedname) == std::wstring::npos)
330 continue;
331 }
332
333 auctionEntries.push_back(Aentry.get());
334 }
335}
@ INVTYPE_ROBE
Definition ItemTemplate.h:276
@ INVTYPE_CHEST
Definition ItemTemplate.h:261
Definition ItemTemplate.h:619
uint32 Quality
Definition ItemTemplate.h:626
uint32 RequiredLevel
Definition ItemTemplate.h:636
uint32 Class
Definition ItemTemplate.h:621
uint32 InventoryType
Definition ItemTemplate.h:632
uint32 SubClass
Definition ItemTemplate.h:622
Definition AuctionHouseSearcher.h:67
ItemTemplate const * itemTemplate
Definition AuctionHouseSearcher.h:75
std::wstring itemName[TOTAL_LOCALES]
Definition AuctionHouseSearcher.h:68

References ItemTemplate::Class, AuctionHouseSearchInfo::inventoryType, ItemTemplate::InventoryType, INVTYPE_CHEST, INVTYPE_ROBE, AuctionHouseSearchInfo::itemClass, SearchableAuctionEntryItem::itemName, AuctionHouseSearchInfo::itemSubClass, SearchableAuctionEntryItem::itemTemplate, AuctionHouseSearchInfo::levelmax, AuctionHouseSearchInfo::levelmin, AuctionHousePlayerInfo::loc_idx, AuctionSearchListRequest::playerInfo, AuctionHouseSearchInfo::quality, ItemTemplate::Quality, ItemTemplate::RequiredLevel, AuctionSearchListRequest::searchInfo, ItemTemplate::SubClass, AuctionHouseSearchInfo::usable, AuctionHousePlayerInfo::usablePlayerInfo, and AuctionHouseSearchInfo::wsearchedname.

Referenced by SearchListRequest().

◆ GetSearchableAuctionMap()

SearchableAuctionEntriesMap & AuctionHouseWorkerThread::GetSearchableAuctionMap ( AuctionHouseFaction  faction)
inlineprivate
267{ return _searchableAuctionMap[static_cast<uint8>(faction)]; };
std::uint8_t uint8
Definition Define.h:109
SearchableAuctionEntriesMap _searchableAuctionMap[MAX_AUCTION_HOUSE_FACTIONS]
Definition AuctionHouseSearcher.h:269

References _searchableAuctionMap.

Referenced by SearchBidderListRequest(), SearchListRequest(), SearchOwnerListRequest(), SearchUpdateAdd(), SearchUpdateBid(), and SearchUpdateRemove().

◆ ProcessSearchRequests()

void AuctionHouseWorkerThread::ProcessSearchRequests ( )
private
110{
111 AuctionSearcherRequest* searchRequest;
112 while (_requestQueue->Pop(searchRequest))
113 {
114 switch (searchRequest->requestType)
115 {
117 {
118 AuctionSearchListRequest const* searchListRequest = static_cast<AuctionSearchListRequest*>(searchRequest);
119 SearchListRequest(*searchListRequest);
120 break;
121 }
123 {
124 AuctionSearchOwnerListRequest const* searchOwnerListRequest = static_cast<AuctionSearchOwnerListRequest*>(searchRequest);
125 SearchOwnerListRequest(*searchOwnerListRequest);
126 break;
127 }
129 {
130 AuctionSearchBidderListRequest const* searchBidderListRequest = static_cast<AuctionSearchBidderListRequest*>(searchRequest);
131 SearchBidderListRequest(*searchBidderListRequest);
132 break;
133 }
134 default:
135 break;
136 }
137
138 delete searchRequest;
139 }
140}
void SearchListRequest(AuctionSearchListRequest const &searchListRequest)
Definition AuctionHouseSearcher.cpp:142
void SearchOwnerListRequest(AuctionSearchOwnerListRequest const &searchOwnerListRequest)
Definition AuctionHouseSearcher.cpp:205
void SearchBidderListRequest(AuctionSearchBidderListRequest const &searchBidderListRequest)
Definition AuctionHouseSearcher.cpp:235
bool Pop(T &value)
Definition PCQueue.h:60
Definition AuctionHouseSearcher.h:173
Definition AuctionHouseSearcher.h:156
Definition AuctionHouseSearcher.h:165
Definition AuctionHouseSearcher.h:140
Type requestType
Definition AuctionHouseSearcher.h:151

References _requestQueue, AuctionSearcherRequest::BIDDER_LIST, AuctionSearcherRequest::LIST, AuctionSearcherRequest::OWNER_LIST, ProducerConsumerQueue< T >::Pop(), AuctionSearcherRequest::requestType, SearchBidderListRequest(), SearchListRequest(), and SearchOwnerListRequest().

Referenced by Run().

◆ ProcessSearchUpdates()

void AuctionHouseWorkerThread::ProcessSearchUpdates ( )
private
56{
57 std::shared_ptr<AuctionSearcherUpdate> auctionSearchUpdate;
58 while (_auctionUpdatesQueue.next(auctionSearchUpdate))
59 {
60 switch (auctionSearchUpdate->updateType)
61 {
63 {
64 std::shared_ptr<AuctionSearchAdd> const auctionAdd = std::static_pointer_cast<AuctionSearchAdd>(auctionSearchUpdate);
65 SearchUpdateAdd(*auctionAdd.get());
66 break;
67 }
69 {
70 std::shared_ptr<AuctionSearchRemove> const auctionRemove = std::static_pointer_cast<AuctionSearchRemove>(auctionSearchUpdate);
71 SearchUpdateRemove(*auctionRemove.get());
72 break;
73 }
75 {
76 std::shared_ptr<AuctionSearchUpdateBid> const auctionUpdateBid = std::static_pointer_cast<AuctionSearchUpdateBid>(auctionSearchUpdate);
77 SearchUpdateBid(*auctionUpdateBid.get());
78 break;
79 }
80 default:
81 break;
82 }
83 }
84}
void SearchUpdateRemove(AuctionSearchRemove const &auctionRemove)
Definition AuctionHouseSearcher.cpp:92
void SearchUpdateAdd(AuctionSearchAdd const &auctionAdd)
Definition AuctionHouseSearcher.cpp:86
void SearchUpdateBid(AuctionSearchUpdateBid const &auctionUpdateBid)
Definition AuctionHouseSearcher.cpp:98
bool next(T &result)
Gets the next item in the queue and removes it.
Definition LockedQueue.h:77

References _auctionUpdatesQueue, AuctionSearcherUpdate::ADD, LockedQueue< T, StorageType >::next(), AuctionSearcherUpdate::REMOVE, SearchUpdateAdd(), SearchUpdateBid(), SearchUpdateRemove(), and AuctionSearcherUpdate::UPDATE_BID.

Referenced by Run().

◆ Run()

void AuctionHouseWorkerThread::Run ( )
private
45{
46 while (!_stopped)
47 {
48 std::this_thread::sleep_for(Milliseconds(25));
49
52 }
53}
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:27
void ProcessSearchRequests()
Definition AuctionHouseSearcher.cpp:109
void ProcessSearchUpdates()
Definition AuctionHouseSearcher.cpp:55

References _stopped, ProcessSearchRequests(), and ProcessSearchUpdates().

Referenced by AuctionHouseWorkerThread().

◆ SearchBidderListRequest()

void AuctionHouseWorkerThread::SearchBidderListRequest ( AuctionSearchBidderListRequest const &  searchBidderListRequest)
private
236{
237 SearchableAuctionEntriesMap const& searchableAuctionMap = GetSearchableAuctionMap(searchBidderListRequest.listFaction);
238
239 AuctionSearcherResponse* searchResponse = new AuctionSearcherResponse();
240 searchResponse->playerGuid = searchBidderListRequest.ownerGuid;
241 searchResponse->packet.Initialize(SMSG_AUCTION_BIDDER_LIST_RESULT, (4 + 4 + 4));
242 searchResponse->packet << (uint32)0; //add 0 as count
243
244 uint32 count = 0;
245 uint32 totalcount = 0;
246
247 for (uint32 const auctionId : searchBidderListRequest.outbiddedAuctionIds)
248 {
249 SearchableAuctionEntriesMap::const_iterator itr = searchableAuctionMap.find(auctionId);
250 if (itr == searchableAuctionMap.end())
251 continue;
252
253 std::shared_ptr<SearchableAuctionEntry> const& auctionEntry = itr->second;
254 auctionEntry->BuildAuctionInfo(searchResponse->packet);
255 ++count;
256 ++totalcount;
257 }
258
259 for (auto const& pair : searchableAuctionMap)
260 {
261 if (pair.second->bidderGuid != searchBidderListRequest.ownerGuid)
262 continue;
263
264 std::shared_ptr<SearchableAuctionEntry> const& auctionEntry = pair.second;
265 auctionEntry->BuildAuctionInfo(searchResponse->packet);
266 ++count;
267 ++totalcount;
268 }
269
270 searchResponse->packet.put<uint32>(0, count); // add count to placeholder
271 searchResponse->packet << totalcount;
272 searchResponse->packet << uint32(AUCTION_SEARCH_DELAY);
273
274 _responseQueue->Enqueue(searchResponse);
275}
#define AUCTION_SEARCH_DELAY
Definition AuctionHouseMgr.h:37
std::unordered_map< uint32, std::shared_ptr< SearchableAuctionEntry > > SearchableAuctionEntriesMap
Definition AuctionHouseSearcher.h:229
std::uint32_t uint32
Definition Define.h:107
SearchableAuctionEntriesMap & GetSearchableAuctionMap(AuctionHouseFaction faction)
Definition AuctionHouseSearcher.h:267
void put(std::size_t pos, T value)
Definition ByteBuffer.h:137
void Initialize(uint16 opcode, std::size_t newres=200)
Definition WorldPacket.h:68
@ SMSG_AUCTION_BIDDER_LIST_RESULT
Definition Opcodes.h:643
Definition AuctionHouseSearcher.h:182
ObjectGuid playerGuid
Definition AuctionHouseSearcher.h:183
WorldPacket packet
Definition AuctionHouseSearcher.h:184

References _responseQueue, AUCTION_SEARCH_DELAY, GetSearchableAuctionMap(), WorldPacket::Initialize(), AuctionSearcherRequest::listFaction, AuctionSearchBidderListRequest::outbiddedAuctionIds, AuctionSearchBidderListRequest::ownerGuid, AuctionSearcherResponse::packet, AuctionSearcherResponse::playerGuid, ByteBuffer::put(), and SMSG_AUCTION_BIDDER_LIST_RESULT.

Referenced by ProcessSearchRequests().

◆ SearchListRequest()

void AuctionHouseWorkerThread::SearchListRequest ( AuctionSearchListRequest const &  searchListRequest)
private
143{
144 SearchableAuctionEntriesMap const& searchableAuctionMap = GetSearchableAuctionMap(searchListRequest.listFaction);
145 uint32 count = 0, totalCount = 0;
146
147 AuctionSearcherResponse* searchResponse = new AuctionSearcherResponse();
148 searchResponse->playerGuid = searchListRequest.playerInfo.playerGuid;
149 searchResponse->packet.Initialize(SMSG_AUCTION_LIST_RESULT, (4 + 4 + 4));
150 searchResponse->packet << (uint32)0;
151
152 if (!searchListRequest.searchInfo.getAll)
153 {
154 SortableAuctionEntriesList auctionEntries;
155 BuildListAuctionItems(searchListRequest, auctionEntries, searchableAuctionMap);
156
157 if (!searchListRequest.searchInfo.sorting.empty() && auctionEntries.size() > MAX_AUCTIONS_PER_PAGE)
158 {
159 AuctionSorter sorter(&searchListRequest.searchInfo.sorting, searchListRequest.playerInfo.loc_idx);
160 std::sort(auctionEntries.begin(), auctionEntries.end(), sorter);
161 }
162
163 SortableAuctionEntriesList::const_iterator itr = auctionEntries.begin();
164 if (searchListRequest.searchInfo.listfrom)
165 {
166 if (searchListRequest.searchInfo.listfrom > auctionEntries.size())
167 itr = auctionEntries.end();
168 else
169 itr += searchListRequest.searchInfo.listfrom;
170 }
171
172 for (; itr != auctionEntries.end(); ++itr)
173 {
174 (*itr)->BuildAuctionInfo(searchResponse->packet);
175
176 if (++count >= MAX_AUCTIONS_PER_PAGE)
177 break;
178 }
179
180 totalCount = auctionEntries.size();
181 }
182 else
183 {
184 // getAll handling
185 for (auto const& pair : searchableAuctionMap)
186 {
187 std::shared_ptr<SearchableAuctionEntry> const& Aentry = pair.second;
188 ++count;
189 Aentry->BuildAuctionInfo(searchResponse->packet);
190
191 if (count >= MAX_GETALL_RETURN)
192 break;
193 }
194
195 totalCount = searchableAuctionMap.size();
196 }
197
198 searchResponse->packet.put<uint32>(0, count);
199 searchResponse->packet << totalCount;
200 searchResponse->packet << uint32(AUCTION_SEARCH_DELAY);
201
202 _responseQueue->Enqueue(searchResponse);
203}
#define MAX_GETALL_RETURN
Definition AuctionHouseMgr.h:47
#define MAX_AUCTIONS_PER_PAGE
Definition AuctionHouseMgr.h:36
std::vector< SearchableAuctionEntry * > SortableAuctionEntriesList
Definition AuctionHouseSearcher.h:230
void BuildListAuctionItems(AuctionSearchListRequest const &searchRequest, SortableAuctionEntriesList &auctionEntries, SearchableAuctionEntriesMap const &auctionMap) const
Definition AuctionHouseSearcher.cpp:277
Definition AuctionHouseSearcher.h:233
@ SMSG_AUCTION_LIST_RESULT
Definition Opcodes.h:634

References _responseQueue, AUCTION_SEARCH_DELAY, BuildListAuctionItems(), AuctionHouseSearchInfo::getAll, GetSearchableAuctionMap(), WorldPacket::Initialize(), AuctionSearcherRequest::listFaction, AuctionHouseSearchInfo::listfrom, AuctionHousePlayerInfo::loc_idx, MAX_AUCTIONS_PER_PAGE, MAX_GETALL_RETURN, AuctionSearcherResponse::packet, AuctionHousePlayerInfo::playerGuid, AuctionSearcherResponse::playerGuid, AuctionSearchListRequest::playerInfo, ByteBuffer::put(), AuctionSearchListRequest::searchInfo, SMSG_AUCTION_LIST_RESULT, and AuctionHouseSearchInfo::sorting.

Referenced by ProcessSearchRequests().

◆ SearchOwnerListRequest()

void AuctionHouseWorkerThread::SearchOwnerListRequest ( AuctionSearchOwnerListRequest const &  searchOwnerListRequest)
private
206{
207 SearchableAuctionEntriesMap const& searchableAuctionMap = GetSearchableAuctionMap(searchOwnerListRequest.listFaction);
208
209 AuctionSearcherResponse* searchResponse = new AuctionSearcherResponse();
210 searchResponse->playerGuid = searchOwnerListRequest.ownerGuid;
211 searchResponse->packet.Initialize(SMSG_AUCTION_OWNER_LIST_RESULT, (4 + 4 + 4));
212 searchResponse->packet << (uint32)0; // amount place holder
213
214 uint32 count = 0;
215 uint32 totalcount = 0;
216
217 for (auto const& pair : searchableAuctionMap)
218 {
219 if (pair.second->ownerGuid != searchOwnerListRequest.ownerGuid)
220 continue;
221
222 std::shared_ptr<SearchableAuctionEntry> const& auctionEntry = pair.second;
223 auctionEntry->BuildAuctionInfo(searchResponse->packet);
224 ++count;
225 ++totalcount;
226 }
227
228 searchResponse->packet.put<uint32>(0, count);
229 searchResponse->packet << (uint32)totalcount;
230 searchResponse->packet << uint32(AUCTION_SEARCH_DELAY);
231
232 _responseQueue->Enqueue(searchResponse);
233}
@ SMSG_AUCTION_OWNER_LIST_RESULT
Definition Opcodes.h:635

References _responseQueue, AUCTION_SEARCH_DELAY, GetSearchableAuctionMap(), WorldPacket::Initialize(), AuctionSearcherRequest::listFaction, AuctionSearchOwnerListRequest::ownerGuid, AuctionSearcherResponse::packet, AuctionSearcherResponse::playerGuid, ByteBuffer::put(), and SMSG_AUCTION_OWNER_LIST_RESULT.

Referenced by ProcessSearchRequests().

◆ SearchUpdateAdd()

void AuctionHouseWorkerThread::SearchUpdateAdd ( AuctionSearchAdd const &  auctionAdd)
private
87{
88 SearchableAuctionEntriesMap& searchableAuctionMap = GetSearchableAuctionMap(auctionAdd.listFaction);
89 searchableAuctionMap.insert(std::make_pair(auctionAdd.searchableAuctionEntry->Id, auctionAdd.searchableAuctionEntry));
90}

References GetSearchableAuctionMap(), AuctionSearcherUpdate::listFaction, and AuctionSearchAdd::searchableAuctionEntry.

Referenced by ProcessSearchUpdates().

◆ SearchUpdateBid()

void AuctionHouseWorkerThread::SearchUpdateBid ( AuctionSearchUpdateBid const &  auctionUpdateBid)
private
99{
100 SearchableAuctionEntriesMap const& searchableAuctionMap = GetSearchableAuctionMap(auctionUpdateBid.listFaction);
101 SearchableAuctionEntriesMap::const_iterator itr = searchableAuctionMap.find(auctionUpdateBid.auctionId);
102 if (itr != searchableAuctionMap.end())
103 {
104 itr->second->bid = auctionUpdateBid.bid;
105 itr->second->bidderGuid = auctionUpdateBid.bidderGuid;
106 }
107}

References AuctionSearchUpdateBid::auctionId, AuctionSearchUpdateBid::bid, AuctionSearchUpdateBid::bidderGuid, GetSearchableAuctionMap(), and AuctionSearcherUpdate::listFaction.

Referenced by ProcessSearchUpdates().

◆ SearchUpdateRemove()

void AuctionHouseWorkerThread::SearchUpdateRemove ( AuctionSearchRemove const &  auctionRemove)
private
93{
94 SearchableAuctionEntriesMap& searchableAuctionMap = GetSearchableAuctionMap(auctionRemove.listFaction);
95 searchableAuctionMap.erase(auctionRemove.auctionId);
96}

References AuctionSearchRemove::auctionId, GetSearchableAuctionMap(), and AuctionSearcherUpdate::listFaction.

Referenced by ProcessSearchUpdates().

◆ Stop()

void AuctionHouseWorkerThread::Stop ( )
34{
35 _stopped = true;
36 _workerThread.join();
37}

References _stopped, and _workerThread.

Member Data Documentation

◆ _auctionUpdatesQueue

LockedQueue<std::shared_ptr<AuctionSearcherUpdate> > AuctionHouseWorkerThread::_auctionUpdatesQueue
private

◆ _requestQueue

ProducerConsumerQueue<AuctionSearcherRequest*>* AuctionHouseWorkerThread::_requestQueue
private

◆ _responseQueue

◆ _searchableAuctionMap

SearchableAuctionEntriesMap AuctionHouseWorkerThread::_searchableAuctionMap[MAX_AUCTION_HOUSE_FACTIONS]
private

Referenced by GetSearchableAuctionMap().

◆ _stopped

std::atomic<bool> AuctionHouseWorkerThread::_stopped
private

Referenced by AuctionHouseWorkerThread(), Run(), and Stop().

◆ _workerThread

std::thread AuctionHouseWorkerThread::_workerThread
private

Referenced by AuctionHouseWorkerThread(), and Stop().


The documentation for this class was generated from the following files: