1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-20 19:07:38 +03:00

CAPI: EDMC - converted to the queue request/response format

This commit is contained in:
Athanasius 2021-08-24 12:56:12 +01:00
parent 3df688ecd4
commit 332d4cf975
No known key found for this signature in database
GPG Key ID: AE3E527847057C7D
2 changed files with 38 additions and 5 deletions

37
EDMC.py
View File

@ -6,9 +6,11 @@ import argparse
import json
import locale
import os
import queue
import re
import sys
from os.path import getmtime, join
from queue import Queue
from time import sleep, time
from typing import TYPE_CHECKING, Any, List, Optional
@ -270,9 +272,40 @@ sys.path: {sys.path}'''
companion.session.login(monitor.cmdr, monitor.is_beta)
# Set up the response queue
capi_response_queue: Queue = Queue()
companion.session.set_capi_response_queue(capi_response_queue)
# Initiate CAPI queries
querytime = int(time())
data = companion.session.station()
config.set('querytime', querytime)
companion.session.station(query_time=querytime)
# Wait for the response
_capi_request_timeout = 60
try:
capi_response = capi_response_queue.get(block=True, timeout=_capi_request_timeout)
except queue.Empty:
logger.error(f'CAPI requests timed out after {_capi_request_timeout} seconds')
sys.exit(EXIT_SERVER)
else:
if isinstance(capi_response, companion.CAPIFailedRequest):
logger.trace_if('capi.worker', f'Failed Request: {capi_response.message}')
if capi_response.exception:
raise capi_response.exception
else:
raise ValueError(capi_response.message)
logger.trace_if('capi.worker', 'Answer is not a Failure')
if not isinstance(capi_response, companion.EDMCCAPIResponse):
msg = f"Response was neither CAPIFailedRequest nor EDMCAPIResponse: {type(capi_response)}"
logger.error(msg)
raise ValueError(msg)
data = capi_response.capi_data
config.set('querytime', querytime)
# Validation
if not deep_get(data, 'commander', 'name', default='').strip():

View File

@ -587,7 +587,7 @@ class Session(object):
self.tk_master: Optional[tk.Tk] = None
self.capi_raw_data = CAPIDataRaw()
logger.info('Starting CAPI queries thread...')
logger.debug('Starting CAPI queries thread...')
self.capi_response_queue: Queue
self.capi_query_queue: Queue = Queue()
self.capi_query_thread = threading.Thread(
@ -596,7 +596,7 @@ class Session(object):
name='CAPI worker'
)
self.capi_query_thread.start()
logger.info('Done')
logger.debug('Done')
def set_capi_response_queue(self, capi_response_queue: Queue) -> None:
"""Set a reference to the CAPI response data queue."""
@ -711,7 +711,7 @@ class Session(object):
######################################################################
def capi_query_worker(self): # noqa: C901, CCR001
"""Worker thread that performs actual CAPI queries."""
logger.info('CAPI worker thread starting')
logger.debug('CAPI worker thread starting')
def capi_single_query(capi_endpoint: str, timeout: int = capi_default_timeout) -> CAPIData: # noqa: CCR001
"""