summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/python/samples/registration.py
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip-apps/src/python/samples/registration.py')
-rw-r--r--pjsip-apps/src/python/samples/registration.py56
1 files changed, 56 insertions, 0 deletions
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 <benny@prijono.org>
+#
+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()
+