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)