corelink.resources.reqs

Data retireval functions.

 1"""Data retireval functions."""
 2
 3from . import variables
 4import json
 5import asyncio
 6
 7async def request_func(command: dict) -> dict:
 8    """Sends control function to server
 9    :param command: request to be send
10    """
11    variables.log("requesting: "+ str(command))
12    command['ID'] = variables.controlID
13    variables.request_queue[variables.controlID] = False
14    variables.controlID += 1
15    await variables.connection.send(json.dumps(command))
16    while not variables.request_queue[command['ID']]:
17        await asyncio.sleep(.05)
18    ret = variables.request_queue[command['ID']]
19    del variables.request_queue[command['ID']]
20    return ret
21
22def retrieve(response, key=None, ret=False):
23    variables.log("retrieving data")
24    if response["statusCode"] == 0:
25        if ret:
26            return response
27        elif key is None:
28            return 0
29        else:
30            try:
31                return response[key]
32            except KeyError:
33                raise KeyError("Data retrieval failed.")
34    raise Exception("request returned with status code " + str(response['statusCode']) + ":\n" + response['message'])
35
36async def receiver_callback(message: bytes):
37    variables.log('in receiver_callback()')
38    head_size = int.from_bytes(message[:2], 'little')
39    if head_size:
40        header = json.loads(message[8:head_size+8])
41    else:
42        header = {}
43    streamID = int.from_bytes(message[4:6], 'little')
44    message = message[8+head_size:]
45    await variables.user_cb(message, streamID, header)
46
47    
async def request_func(command: dict) -> dict:
 8async def request_func(command: dict) -> dict:
 9    """Sends control function to server
10    :param command: request to be send
11    """
12    variables.log("requesting: "+ str(command))
13    command['ID'] = variables.controlID
14    variables.request_queue[variables.controlID] = False
15    variables.controlID += 1
16    await variables.connection.send(json.dumps(command))
17    while not variables.request_queue[command['ID']]:
18        await asyncio.sleep(.05)
19    ret = variables.request_queue[command['ID']]
20    del variables.request_queue[command['ID']]
21    return ret

Sends control function to server

Parameters
  • command: request to be send
def retrieve(response, key=None, ret=False):
23def retrieve(response, key=None, ret=False):
24    variables.log("retrieving data")
25    if response["statusCode"] == 0:
26        if ret:
27            return response
28        elif key is None:
29            return 0
30        else:
31            try:
32                return response[key]
33            except KeyError:
34                raise KeyError("Data retrieval failed.")
35    raise Exception("request returned with status code " + str(response['statusCode']) + ":\n" + response['message'])
async def receiver_callback(message: bytes):
37async def receiver_callback(message: bytes):
38    variables.log('in receiver_callback()')
39    head_size = int.from_bytes(message[:2], 'little')
40    if head_size:
41        header = json.loads(message[8:head_size+8])
42    else:
43        header = {}
44    streamID = int.from_bytes(message[4:6], 'little')
45    message = message[8+head_size:]
46    await variables.user_cb(message, streamID, header)