コード例 #1
0
ファイル: doug.py プロジェクト: braams/shtoom
 def acceptCall(self, call):
     from shtoom.doug.leg import Leg
     log.msg("acceptCall dialog is %r"%(call.dialog), system='doug')
     calltype = call.dialog.getDirection()
     if call.cookie is None:
         cookie = self.getCookie()
     else:
         cookie = call.cookie
     self._calls[cookie] = call
     d = self._createRTP(cookie,
                         call.getLocalSIPAddress()[0],
                         call.getSTUNState())
     if calltype == 'outbound':
         # Outbound call, trigger the callback immediately
         d.addCallback(lambda x: cookie)
     elif calltype == 'inbound':
         # Otherwise we chain callbacks
         self.initVoiceapp(cookie)
         d.addErrback(lambda x: self.rejectedCall(cookie, x))
         ad = defer.Deferred()
         inbound = Leg(cookie, call.dialog)
         inbound.incomingCall(ad)
         self._voiceapps[cookie].va_callstart(inbound)
         d.addCallback(lambda x, ad=ad: ad)
     else:
         raise ValueError, "unknown call type %s"%(calltype)
     d.addErrback(self.bong)
     return d
コード例 #2
0
ファイル: doug.py プロジェクト: bmxp/shtoom
 def acceptCall(self, call):
     from shtoom.doug.leg import Leg
     log.msg("acceptCall dialog is %r" % (call.dialog), system='doug')
     calltype = call.dialog.getDirection()
     if call.cookie is None:
         cookie = self.getCookie()
     else:
         cookie = call.cookie
     self._calls[cookie] = call
     d = self._createRTP(cookie,
                         call.getLocalSIPAddress()[0], call.getSTUNState())
     if calltype == 'outbound':
         # Outbound call, trigger the callback immediately
         d.addCallback(lambda x: cookie)
     elif calltype == 'inbound':
         # Otherwise we chain callbacks
         self.initVoiceapp(cookie)
         d.addErrback(lambda x: self.rejectedCall(cookie, x))
         ad = defer.Deferred()
         inbound = Leg(cookie, call.dialog)
         inbound.incomingCall(ad)
         self._voiceapps[cookie].va_callstart(inbound)
         d.addCallback(lambda x, ad=ad: ad)
     else:
         raise ValueError("unknown call type %s" % (calltype))
     d.addErrback(self.bong)
     return d
コード例 #3
0
ファイル: test_douglegs.py プロジェクト: bmxp/shtoom
 def test_legConstructor(self):
     from shtoom.sip import Dialog
     ae = self.assertEqual
     d = Dialog()
     cookie = 'NCookie'
     l = Leg(cookie, d)
     ae(l.getCookie(), cookie)
     ae(l.getDialog(), d)
     l.setCookie('foo')
     ae(l.getCookie(), 'foo')
     # We should be connected to silence at this point
     class Foo:
         def handle_media_sample(self, sample, tester=self):
             tester.fail("WRONG.  We should be hearing silence, but we received this sample: %s" % (sample,))
     l.set_handler(Foo())
コード例 #4
0
ファイル: test_douglegs.py プロジェクト: braams/shtoom
 def test_legConstructor(self):
     from shtoom.sip import Dialog
     ae = self.assertEquals
     d = Dialog()
     cookie = 'NCookie'
     l = Leg(cookie, d)
     ae(l.getCookie(), cookie)
     ae(l.getDialog(), d)
     l.setCookie('foo')
     ae(l.getCookie(), 'foo')
     # We should be connected to silence at this point
     class Foo:
         def handle_media_sample(self, sample, tester=self):
             tester.fail("WRONG.  We should be hearing silence, but we received this sample: %s" % (sample,))
     l.set_handler(Foo())
コード例 #5
0
ファイル: test_douglegs.py プロジェクト: braams/shtoom
    def test_legCallSetup(self):
        from shtoom.sip import Dialog
        ae = self.assertEquals
        d = Dialog()
        cookie = 'NCookie'
        class A:
            res = None
            def good(self, res):
                self.res = res
            def bad(self, err):
                self.res = err

        l = Leg(cookie, d)
        a = A()
        d = defer.Deferred()
        d.addCallbacks(a.good, a.bad)
        l.incomingCall(d)
        ae(a.res, None)
        l.answerCall(voiceapp=None)
        twisted.trial.util.wait(d)
        ae(a.res, cookie)
        l.rejectCall(Exception('because'))
        twisted.trial.util.wait(d)
        ae(a.res, cookie)

        l = Leg(cookie, d)
        a = A()
        d = defer.Deferred()
        d.addCallbacks(a.good, a.bad)
        l.incomingCall(d)
        ae(a.res, None)
        # XXX should be an exception
        l.rejectCall(Exception('because'))
        twisted.trial.util.wait(d)
        # rejectCall triggers an errback, so we get
        # Failure(DefaultException(reason))
        ae(a.res.value.args, ('because',))
コード例 #6
0
ファイル: test_douglegs.py プロジェクト: xregist/shtoom
    def test_legCallSetup(self):
        from shtoom.sip import Dialog
        ae = self.assertEquals
        d = Dialog()
        cookie = 'NCookie'

        class A:
            res = None

            def good(self, res):
                self.res = res

            def bad(self, err):
                self.res = err

        l = Leg(cookie, d)
        a = A()
        d = defer.Deferred()
        d.addCallbacks(a.good, a.bad)
        l.incomingCall(d)
        ae(a.res, None)
        l.answerCall(voiceapp=None)
        twisted.trial.util.wait(d)
        ae(a.res, cookie)
        l.rejectCall(Exception('because'))
        twisted.trial.util.wait(d)
        ae(a.res, cookie)

        l = Leg(cookie, d)
        a = A()
        d = defer.Deferred()
        d.addCallbacks(a.good, a.bad)
        l.incomingCall(d)
        ae(a.res, None)
        # XXX should be an exception
        l.rejectCall(Exception('because'))
        twisted.trial.util.wait(d)
        # rejectCall triggers an errback, so we get
        # Failure(DefaultException(reason))
        ae(a.res.value.args, ('because', ))
コード例 #7
0
ファイル: voiceapp.py プロジェクト: bmxp/shtoom
 def placeCall(self, toURI, fromURI=None):
     from shtoom.doug.leg import Leg
     nleg = Leg(cookie=None, dialog=None, voiceapp=self)
     self.__appl.placeCall(self.__cookie, nleg, toURI, fromURI)