MCPcopy
hub / github.com/pyfa-org/Pyfa / SearchWorkerThread

Class SearchWorkerThread

service/market.py:99–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

97
98
99class SearchWorkerThread(threading.Thread):
100
101 def __init__(self):
102 threading.Thread.__init__(self)
103 self.name = "SearchWorker"
104 self.jargonLoader = JargonLoader.instance()
105 # load the jargon while in an out-of-thread context, to spot any problems while in the main thread
106 self.jargonLoader.get_jargon()
107 self.jargonLoader.get_jargon().apply('test string'.split())
108 self.running = True
109
110 def run(self):
111 self.cv = threading.Condition()
112 self.searchRequest = None
113 self.processSearches()
114
115 def processSearches(self):
116 cv = self.cv
117
118 while True:
119 if not self.running:
120 break
121 cv.acquire()
122 while self.searchRequest is None:
123 cv.wait()
124
125 request, callback, filterName = self.searchRequest
126 self.searchRequest = None
127 cv.release()
128 sMkt = Market.getInstance()
129 if filterName == 'market':
130 # Rely on category data provided by eos as we don't hardcode them much in service
131 filters = [or_(
132 types_Category.name.in_(sMkt.SEARCH_CATEGORIES),
133 types_Group.name.in_(sMkt.SEARCH_GROUPS))]
134 # Used in implant editor
135 elif filterName == 'implants':
136 filters = [types_Category.name == 'Implant']
137 # Actually not everything, just market search + ships
138 elif filterName == 'everything':
139 filters = [
140 or_(
141 types_Category.name.in_(sMkt.FIT_CATEGORIES),
142 types_Group.name.in_(sMkt.FIT_GROUPS)),
143 or_(
144 types_Category.name.in_(sMkt.SEARCH_CATEGORIES),
145 types_Group.name.in_(sMkt.SEARCH_GROUPS))]
146 else:
147 filters = [None]
148
149 if request.strip().lower().startswith('re:'):
150 requestTokens = self._prepareRequestRegex(request[3:])
151 else:
152 requestTokens = self._prepareRequestNormal(request)
153 requestTokens = self.jargonLoader.get_jargon().apply(requestTokens)
154
155 all_results = set()
156 joinedTokens = ' '.join(requestTokens)

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected