From ad776c2aad0adc67f6316493a2552e3799c29222 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Thu, 10 Jul 2008 22:41:20 +0000 Subject: Ticket #556: New object oriented Python abstraction for pjsua API git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2119 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip-apps/src/python/samples/registration.py | 56 +++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 pjsip-apps/src/python/samples/registration.py (limited to 'pjsip-apps/src/python/samples/registration.py') diff --git a/pjsip-apps/src/python/samples/registration.py b/pjsip-apps/src/python/samples/registration.py new file mode 100644 index 00000000..16cae8b2 --- /dev/null +++ b/pjsip-apps/src/python/samples/registration.py @@ -0,0 +1,56 @@ +# $Id:$ +# +# SIP account and registration sample. In this sample, the program +# will block to wait until registration is complete +# +# Copyright (C) 2003-2008 Benny Prijono +# +import sys +import pjsua as pj +import threading + + +def log_cb(level, str, len): + print str, + +class MyAccountCallback(pj.AccountCallback): + sem = None + + def __init__(self, account): + pj.AccountCallback.__init__(self, account) + + def wait(self): + self.sem = threading.Semaphore(0) + self.sem.acquire() + + def on_reg_state(self): + if self.sem: + if self.account.info().reg_status >= 200: + self.sem.release() + +lib = pj.Lib() + +try: + lib.init(log_cfg = pj.LogConfig(level=4, callback=log_cb)) + lib.create_transport(pj.TransportType.UDP, pj.TransportConfig(5080)) + lib.start() + + acc = lib.create_account(pj.AccountConfig("pjsip.org", "bennylp", "***")) + + acc_cb = MyAccountCallback(acc) + acc.set_callback(acc_cb) + acc_cb.wait() + + print "\n" + print "Registration complete, status=", acc.info().reg_status, \ + "(" + acc.info().reg_reason + ")" + print "\nPress ENTER to quit" + sys.stdin.readline() + + lib.destroy() + lib = None + +except pj.Error, e: + print "Exception: " + str(e) + lib.destroy() + -- cgit v1.2.3