def _send_to_screen(screen_id, data): print 'broadcasting to', screen_id, '\n\tdata: ', data screen_channel = 'screen_channel_%s' % screen_id redis_session.publish((screen_channel), data) screen_queue = _rget('screen_message_queue_%s' % screen_channel) or [] screen_queue.append(data) _rset('queue_%s' % screen_channel, screen_queue[:100])
def register_device(device_id, device_name, screen_id, pairing_info): redis_session.sadd('device_ids', device_id) _rset('device_to_screen_id_%s' % device_id, screen_id) _rset('device_to_device_name_%s' % device_id, device_name) _rset('device_to_pairing_info_%s' % device_id, pairing_info) _rset('screen_to_device_id_%s' % screen_id, device_id) _rset('screen_info_%s' % screen_id, {"init_time": time.time(), "broadcasts": {}}) return screen_id
def remove_from_broadcast(screen_id, broadcast_id): broadcast_info = _rget('broadcast_info_%s' % broadcast_id) screen_info = _rget('screen_info_%s' % screen_id) try: broadcast_info['screens'].pop(str(screen_id)) except KeyError: pass else: _rset('broadcast_info_%s' % broadcast_id, broadcast_info) try: screen_info['broadcasts'].pop(str(broadcast_id)) except KeyError: pass else: _rset('screen_info_%s' % screen_id, screen_info) return {'broadcast_id': broadcast_id, 'screen_id': screen_id}
def start_broadcast(broadcast_id, remote_id): redis_session.sadd('remote_ids', remote_id) _rset('remote_to_broadcast_id_%s' % (broadcast_id, ), remote_id) _rset('broadcast_to_remote_id_%s' % (remote_id, ), broadcast_id) _rset('broadcast_info_%s' % broadcast_id, {"init_time": time.time(), "screens": {}}) return broadcast_id
def add_to_broadcast(screen_id, broadcast_id): broadcast_info = _rget('broadcast_info_%s' % broadcast_id) screen_info = _rget('screen_info_%s' % screen_id) start_time = time.time() # Update start times for the broadcast and screen info broadcast_info['screens'][str(screen_id)] = start_time screen_info['broadcasts'][str(broadcast_id)] = start_time # Create a record of the fact that this device has conencted # to this creen remote_id = _rget('remote_to_broadcast_id_%s' % (broadcast_id, )) device_id = _rget('screen_to_device_id_%s' % (screen_id, )) remote_info = _rget('remote_info_%s' % (remote_id, )) if not remote_info: remote_info = {'devices': {}} remote_info['devices'][device_id] = start_time _rset('screen_info_%s' % screen_id, screen_info) _rset('remote_info_%s' % (remote_id, ), remote_info) return _rset('broadcast_info_%s' % broadcast_id, broadcast_info)
def set_broadcast_pairing_info(broadcast_id, connected): _rset('broadcast_pairing_info_%s' % broadcast_id, dict(connected=connected))