def __init__(self, track, num, r_range): """ :type track: plugin.track.Track :type num: int :type r_range: plugin.range.Range """ self.track = track self.server = track.server self.stream_num = num self.range = r_range # HTTP request/response self.request = None self.response = None self.headers = None # Content info self.content_range = None self.content_length = None self.total_length = None # Data buffering self.read_thread = None self.read_sleep = None self.buffer = bytearray() self.on_open = REvent() self.on_reading = Event() self.state = '' self.request_lock = Lock() self.request_seq = 0
def plugin_callback(method, kwargs=None, async=False): """ Invokes callbacks on the plugin instance :param method: The method on the SpotifyPlugin class to call. :param kwargs: A dictionary of keyward args to pass to the method. """ Log.Debug('plugin_callback - method: %s, kwargs: %s, async: %s' % (method, kwargs, async)) kwargs = kwargs or {} result = None if async: on_complete = REvent() kwargs['callback'] = lambda result: on_complete.set(result) method(host, **kwargs) result = on_complete.wait(30) else: result = method(host, **kwargs) if result is None: if async: return MessageContainer( header=L("MSG_CALLBACK_TIMEOUT_TITLE"), message=L("MSG_CALLBACK_TIMEOUT_BODY") )