def process_request(self, context): defer = super(EventMiddleware, self).process_request(context) if 'eventloop' in context: eventloop = context.pop('eventloop') if (isinstance(eventloop, list)) and (len(eventloop) > 0): event_context = eventloop[0] timeout = event_context.get('timeout', None) timestamp = event_context.get('timestamp', None) if not (timestamp and timeout): raise InvalidRequest('Invalid request for {0}.'.format(eventloop)) cost_time = float(time.time()) - float(timestamp) if cost_time > float(timeout): raise RequestTimeout('Call {0} timeout.'.format(eventloop)) def call(cli, text, ret): g = IGroup(cli['group'], cli['type'], cli['uuid']) client = get_client_from_pool(g, _type=cli['cls']) text['result'] = ret client.callBase(text) client.close() def if_success(ret): cli = event_context.get('success_cli', None) text = event_context.get('success', None) if cli and text: return call(cli, text, ret) def if_failed(ret): cli = event_context.get('failed_cli', None) text = event_context.get('failed', None) if cli and text: return call(cli, text, ret) defer.addCallbacks(lambda ret: if_success(ret), errback=lambda ret: if_failed(ret)) return defer
def callButton_clicked(self): sipURL = str(self.addressComboBox.currentText()).strip() if not sipURL: return self.addressComboBox.setCurrentText(sipURL) self.addressComboBox.insertItem(QString(sipURL)) self._newCallURL = sipURL self.callButton.setEnabled(False) defer = self.app.placeCall(sipURL) defer.addCallbacks(self.callConnected, self.callFailed).addErrback(log.err)
def do_NEWGROUPS(self, date, time, timezone='GMT'): defer = self.factory.backend.newgroupsRequest() defer.addCallbacks(self._gotNewgroups, self._errNewgroups)