Changeset 2976 for pjproject


Ignore:
Timestamp:
Oct 29, 2009 8:16:46 AM (15 years ago)
Author:
bennylp
Message:

More ticket #982: added MWI support for Python

Location:
pjproject/trunk/pjsip-apps/src/python
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/python/_pjsua.c

    r2394 r2976  
    631631 
    632632 
     633/* 
     634 * on_mwi_info 
     635 */ 
     636static void cb_on_mwi_info(pjsua_acc_id acc_id, pjsua_mwi_info *mwi_info) 
     637{ 
     638    if (PyCallable_Check(g_obj_callback->on_mwi_info)) { 
     639        PyObject *param_acc_id, *param_body; 
     640        pj_str_t body; 
     641 
     642        ENTER_PYTHON(); 
     643 
     644        body.ptr = mwi_info->rdata->msg_info.msg->body->data; 
     645        body.slen = mwi_info->rdata->msg_info.msg->body->len; 
     646 
     647        PyObject_CallFunctionObjArgs( 
     648                g_obj_callback->on_mwi_info, 
     649                param_acc_id    = Py_BuildValue("i",acc_id), 
     650                param_body      = PyString_FromPJ(&body), 
     651                NULL 
     652            ); 
     653 
     654        Py_DECREF(param_acc_id); 
     655        Py_DECREF(param_body); 
     656 
     657        LEAVE_PYTHON(); 
     658    } 
     659} 
    633660 
    634661/*  
     
    902929        cfg_ua.cb.on_pager_status2 = &cb_on_pager_status; 
    903930        cfg_ua.cb.on_typing2 = &cb_on_typing; 
     931        cfg_ua.cb.on_mwi_info = &cb_on_mwi_info; 
    904932 
    905933        p_cfg_ua = &cfg_ua; 
  • pjproject/trunk/pjsip-apps/src/python/_pjsua.h

    r2859 r2976  
    236236    PyObject * on_pager_status; 
    237237    PyObject * on_typing; 
     238    PyObject * on_mwi_info; 
    238239} PyObj_pjsua_callback; 
    239240 
     
    259260    Py_XDECREF(self->on_pager_status); 
    260261    Py_XDECREF(self->on_typing); 
     262    Py_XDECREF(self->on_mwi_info); 
    261263    self->ob_type->tp_free((PyObject*)self); 
    262264} 
     
    292294        self->on_pager_status = Py_BuildValue(""); 
    293295        self->on_typing = Py_BuildValue(""); 
     296        self->on_mwi_info = Py_BuildValue(""); 
    294297    } 
    295298 
     
    394397        offsetof(PyObj_pjsua_callback, on_typing), 0, 
    395398        "Notify application about typing indication." 
     399    }, 
     400    { 
     401        "on_mwi_info", T_OBJECT_EX,  
     402        offsetof(PyObj_pjsua_callback, on_mwi_info), 0, 
     403        "Notify application about MWI indication." 
    396404    }, 
    397405    {NULL}  /* Sentinel */ 
     
    16461654    PyObject        *reg_uri; 
    16471655    int              publish_enabled; 
     1656    int              mwi_enabled; 
    16481657    PyObject        *force_contact; 
    16491658    PyListObject    *proxy; 
     
    16991708    obj->reg_uri    = PyString_FromPJ(&cfg->reg_uri); 
    17001709    obj->publish_enabled = cfg->publish_enabled; 
     1710    obj->mwi_enabled = cfg->mwi_enabled; 
    17011711    Py_XDECREF(obj->force_contact); 
    17021712    obj->force_contact = PyString_FromPJ(&cfg->force_contact); 
     
    17541764    cfg->reg_uri    = PyString_ToPJ(obj->reg_uri); 
    17551765    cfg->publish_enabled = obj->publish_enabled; 
     1766    cfg->mwi_enabled = obj->mwi_enabled; 
    17561767    cfg->force_contact = PyString_ToPJ(obj->force_contact); 
    17571768 
     
    18571868        offsetof(PyObj_pjsua_acc_config, publish_enabled), 0, 
    18581869        "Publish presence? " 
     1870    }, 
     1871    { 
     1872        "mwi_enabled", T_INT,  
     1873        offsetof(PyObj_pjsua_acc_config, mwi_enabled), 0, 
     1874        "Enable MWI subscription " 
    18591875    }, 
    18601876    { 
  • pjproject/trunk/pjsip-apps/src/python/pjsua.py

    r2910 r2976  
    994994        pass 
    995995 
     996    def on_mwi_info(self, body): 
     997        """ 
     998        Notification about change in Message Summary / Message Waiting 
     999        Indication (RFC 3842) status. MWI subscription must be enabled 
     1000        in the account config to receive this notification. 
     1001 
     1002        Keyword arguments: 
     1003        body      -- String containing message body as received in the 
     1004                     NOTIFY request. 
     1005 
     1006        """ 
     1007        pass 
     1008 
    9961009 
    9971010 
     
    21142127        py_ua_cfg.cb.on_pager_status = _cb_on_pager_status 
    21152128        py_ua_cfg.cb.on_typing = _cb_on_typing 
     2129        py_ua_cfg.cb.on_mwi_info = _cb_on_mwi_info; 
    21162130 
    21172131        err = _pjsua.init(py_ua_cfg, log_cfg._cvt_to_pjsua(),  
     
    27642778                acc._cb.on_typing(from_uri, contact, is_typing) 
    27652779 
     2780    def _cb_on_mwi_info(self, acc_id, body): 
     2781        acc = self._lookup_account(acc_id) 
     2782        if acc: 
     2783            return acc._cb.on_mwi_info(body) 
     2784 
    27662785    def _cb_on_buddy_state(self, buddy_id): 
    27672786        buddy = self._lookup_buddy(buddy_id) 
     
    28172836    _lib._cb_on_typing(call_id, from_uri, to, contact, is_typing, acc_id) 
    28182837 
     2838def _cb_on_mwi_info(acc_id, body): 
     2839    _lib._cb_on_mwi_info(acc_id, body) 
    28192840 
    28202841# Worker thread 
Note: See TracChangeset for help on using the changeset viewer.