in service/azservice/__main__.py [0:0]
def main():
timings = False
start = time.time()
initialize()
if timings: print('initialize {} s'.format(time.time() - start), file=stderr)
start = time.time()
command_table = load_command_table()
if timings: print('load_command_table {} s'.format(time.time() - start), file=stderr)
start = time.time()
group_index = get_group_index(command_table)
if timings: print('get_group_index {} s'.format(time.time() - start), file=stderr)
start = time.time()
snippets = get_snippets(command_table) if AUTOMATIC_SNIPPETS_ENABLED else []
if timings: print('get_snippets {} s'.format(time.time() - start), file=stderr)
def enqueue_output(input, queue):
for line in iter(input.readline, b''):
queue.put(line)
queue = Queue()
thread = Thread(target=enqueue_output, args=(stdin, queue))
thread.daemon = True
thread.start()
bkg_start = time.time()
keep_loading = True
while True:
if keep_loading:
keep_loading = load_arguments(command_table, 10)
if not keep_loading and timings: print('load_arguments {} s'.format(time.time() - bkg_start), file=stderr)
try:
line = queue.get_nowait() if keep_loading else queue.get()
except Empty:
continue
start = time.time()
request = json.loads(line)
response_data = None
if request['data'].get('request') == 'status':
response_data = get_status()
if timings: print('get_status {} s'.format(time.time() - start), file=stderr)
elif request['data'].get('request') == 'hover':
response_data = get_hover_text(group_index, command_table, request['data']['command'])
if timings: print('get_hover_text {} s'.format(time.time() - start), file=stderr)
else:
response_data = get_completions(group_index, command_table, snippets, request['data'], True)
if timings: print('get_completions {} s'.format(time.time() - start), file=stderr)
response = {
'sequence': request['sequence'],
'data': response_data
}
output = json.dumps(response)
stdout.write(output + '\n')
stdout.flush()
stderr.flush()