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
2121from .datagram import Datagram
2222from .stream import Stream
2323from 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