示例#1
0
    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
示例#2
0
文件: main.py 项目: braams/shtoom
 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)
示例#3
0
 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)
示例#4
0
 def do_NEWGROUPS(self, date, time, timezone='GMT'):
     defer = self.factory.backend.newgroupsRequest()
     defer.addCallbacks(self._gotNewgroups, self._errNewgroups)