Skip to content

Commit be669cf

Browse files
committed
Add unsubsribe method + new class for exceptions
1 parent 0564c05 commit be669cf

2 files changed

Lines changed: 24 additions & 7 deletions

File tree

opensips/event/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@
1717
## along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
##
1919

20-
from .subscriber import EventInterface
20+
from .subscriber import OpenSIPSEvent, OpenSIPSEventException

opensips/event/subscriber.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,15 @@
1717
## along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
##
1919

20-
from ..mi import MI
20+
from ..mi import MI, OpenSIPSMIException
2121
from .datagram import Datagram
2222
from .stream import Stream
2323
from threading import Thread, Event
2424

25-
class EventInterface():
25+
class OpenSIPSEventException(Exception):
26+
pass
27+
28+
class OpenSIPSEvent():
2629
def __init__(self, mi: MI, type: str, **kwargs):
2730
self.mi = mi
2831
self.kwargs = kwargs
@@ -34,21 +37,35 @@ def __init__(self, mi: MI, type: str, **kwargs):
3437
else:
3538
raise ValueError("Invalid event type")
3639

37-
def subscribe(self, event: str, callback, expire=3600):
40+
def subscribe(self, event: str, callback, expire=None):
3841
try:
39-
ret_val = self.mi.execute("event_subscribe", [event, self.socket.sock_name, expire])
40-
print(ret_val)
42+
if expire is None:
43+
ret_val = self.mi.execute("event_subscribe", [event, self.socket.sock_name])
44+
else:
45+
ret_val = self.mi.execute("event_subscribe", [event, self.socket.sock_name, expire])
4146

4247
if ret_val != "OK":
43-
raise Exception("Failed to subscribe to event")
48+
raise OpenSIPSEventException("Failed to subscribe to event")
4449

4550
self.socket.create()
4651
self.thread_stop = Event()
4752
self.thread_stop.clear()
4853
self.thread = Thread(target=self.socket.handle, args=(callback, self.thread_stop))
4954
self.thread.start()
5055

56+
except OpenSIPSMIException as e:
57+
raise e
5158
except Exception as e:
59+
raise OpenSIPSEventException("Failed to subscribe to event: {}".format(e))
60+
61+
def unsubscribe(self, event: str):
62+
try:
63+
ret_val = self.mi.execute("event_subscribe", [event, self.socket.sock_name, 0])
64+
65+
if ret_val != "OK":
66+
raise OpenSIPSEventException("Failed to unsubscribe from event")
67+
68+
except OpenSIPSMIException as e:
5269
raise e
5370

5471
def stop(self):

0 commit comments

Comments
 (0)