⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 py_pjsua.c

📁 基于sip协议的网络电话源码
💻 C
📖 第 1 页 / 共 5 页
字号:
    pjsip_generic_string_hdr * p_hdr;    len = pj_list_size(hdr);        if (len > 0)     {        p_hdr = hdr;        Py_XDECREF(py_hdr_list);        py_hdr_list = PyList_New(len);        for (i = 0; i < len && p_hdr != NULL; i++) 	{            PyObject * tuple;            PyObject * str;            tuple = PyTuple_New(2);	                str = PyString_FromStringAndSize(p_hdr->name.ptr, p_hdr->name.slen);            PyTuple_SetItem(tuple, 0, str);            str = PyString_FromStringAndSize		(hdr->hvalue.ptr, p_hdr->hvalue.slen);            PyTuple_SetItem(tuple, 1, str);            PyList_SetItem(py_hdr_list, i, tuple);            p_hdr = p_hdr->next;	}    }        }/* * pj_pool_Object */typedef struct{    PyObject_HEAD    /* Type-specific fields go here. */    pj_pool_t * pool;} pj_pool_Object;/* * pj_pool_Type */static PyTypeObject pj_pool_Type ={    PyObject_HEAD_INIT(NULL)    0,                         /*ob_size*/    "py_pjsua.PJ_Pool",        /*tp_name*/    sizeof(pj_pool_Object),    /*tp_basicsize*/    0,                         /*tp_itemsize*/    0,                         /*tp_dealloc*/    0,                         /*tp_print*/    0,                         /*tp_getattr*/    0,                         /*tp_setattr*/    0,                         /*tp_compare*/    0,                         /*tp_repr*/    0,                         /*tp_as_number*/    0,                         /*tp_as_sequence*/    0,                         /*tp_as_mapping*/    0,                         /*tp_hash */    0,                         /*tp_call*/    0,                         /*tp_str*/    0,                         /*tp_getattro*/    0,                         /*tp_setattro*/    0,                         /*tp_as_buffer*/    Py_TPFLAGS_DEFAULT,        /*tp_flags*/    "pj_pool_t objects",       /* tp_doc */};/* * pjsip_endpoint_Object */typedef struct{    PyObject_HEAD    /* Type-specific fields go here. */    pjsip_endpoint * endpt;} pjsip_endpoint_Object;/* * pjsip_endpoint_Type */static PyTypeObject pjsip_endpoint_Type ={    PyObject_HEAD_INIT(NULL)    0,                         /*ob_size*/    "py_pjsua.PJSIP_Endpoint", /*tp_name*/    sizeof(pjsip_endpoint_Object),/*tp_basicsize*/    0,                         /*tp_itemsize*/    0,                         /*tp_dealloc*/    0,                         /*tp_print*/    0,                         /*tp_getattr*/    0,                         /*tp_setattr*/    0,                         /*tp_compare*/    0,                         /*tp_repr*/    0,                         /*tp_as_number*/    0,                         /*tp_as_sequence*/    0,                         /*tp_as_mapping*/    0,                         /*tp_hash */    0,                         /*tp_call*/    0,                         /*tp_str*/    0,                         /*tp_getattro*/    0,                         /*tp_setattro*/    0,                         /*tp_as_buffer*/    Py_TPFLAGS_DEFAULT,        /*tp_flags*/    "pjsip_endpoint objects",  /* tp_doc */};/* * pjmedia_endpt_Object */typedef struct{    PyObject_HEAD    /* Type-specific fields go here. */    pjmedia_endpt * endpt;} pjmedia_endpt_Object;/* * pjmedia_endpt_Type */static PyTypeObject pjmedia_endpt_Type ={    PyObject_HEAD_INIT(NULL)    0,                         /*ob_size*/    "py_pjsua.PJMedia_Endpt",  /*tp_name*/    sizeof(pjmedia_endpt_Object), /*tp_basicsize*/    0,                         /*tp_itemsize*/    0,                         /*tp_dealloc*/    0,                         /*tp_print*/    0,                         /*tp_getattr*/    0,                         /*tp_setattr*/    0,                         /*tp_compare*/    0,                         /*tp_repr*/    0,                         /*tp_as_number*/    0,                         /*tp_as_sequence*/    0,                         /*tp_as_mapping*/    0,                         /*tp_hash */    0,                         /*tp_call*/    0,                         /*tp_str*/    0,                         /*tp_getattro*/    0,                         /*tp_setattro*/    0,                         /*tp_as_buffer*/    Py_TPFLAGS_DEFAULT,        /*tp_flags*/    "pjmedia_endpt objects",   /* tp_doc */};/* * pj_pool_factory_Object */typedef struct{    PyObject_HEAD    /* Type-specific fields go here. */    pj_pool_factory * pool_fact;} pj_pool_factory_Object;/* * pj_pool_factory_Type */static PyTypeObject pj_pool_factory_Type ={    PyObject_HEAD_INIT(NULL)    0,                         /*ob_size*/    "py_pjsua.PJ_Pool_Factory",/*tp_name*/    sizeof(pj_pool_factory_Object), /*tp_basicsize*/    0,                         /*tp_itemsize*/    0,                         /*tp_dealloc*/    0,                         /*tp_print*/    0,                         /*tp_getattr*/    0,                         /*tp_setattr*/    0,                         /*tp_compare*/    0,                         /*tp_repr*/    0,                         /*tp_as_number*/    0,                         /*tp_as_sequence*/    0,                         /*tp_as_mapping*/    0,                         /*tp_hash */    0,                         /*tp_call*/    0,                         /*tp_str*/    0,                         /*tp_getattro*/    0,                         /*tp_setattro*/    0,                         /*tp_as_buffer*/    Py_TPFLAGS_DEFAULT,        /*tp_flags*/    "pj_pool_factory objects", /* tp_doc */};/* * pjsip_cred_info_Object */typedef struct{    PyObject_HEAD    /* Type-specific fields go here. */	PyObject * realm;		    PyObject * scheme;		    PyObject * username;	    int	data_type;	    PyObject * data;	    } pjsip_cred_info_Object;/* * cred_info_dealloc * deletes a cred info from memory */static void pjsip_cred_info_dealloc(pjsip_cred_info_Object* self){    Py_XDECREF(self->realm);    Py_XDECREF(self->scheme);    Py_XDECREF(self->username);    Py_XDECREF(self->data);    self->ob_type->tp_free((PyObject*)self);}/* * cred_info_new * constructor for cred_info object */static PyObject * pjsip_cred_info_new(PyTypeObject *type, PyObject *args,                                    PyObject *kwds){    pjsip_cred_info_Object *self;    self = (pjsip_cred_info_Object *)type->tp_alloc(type, 0);    if (self != NULL)    {        self->realm = PyString_FromString("");        if (self->realm == NULL)    	{            Py_DECREF(self);            return NULL;        }        self->scheme = PyString_FromString("");        if (self->scheme == NULL)    	{            Py_DECREF(self);            return NULL;        }        self->username = PyString_FromString("");        if (self->username == NULL)    	{            Py_DECREF(self);            return NULL;        }        self->data = PyString_FromString("");        if (self->data == NULL)    	{            Py_DECREF(self);            return NULL;        }    }    return (PyObject *)self;}/* * pjsip_cred_info_members */static PyMemberDef pjsip_cred_info_members[] ={    {        "realm", T_OBJECT_EX,        offsetof(pjsip_cred_info_Object, realm), 0,        "Realm"    },    {        "scheme", T_OBJECT_EX,        offsetof(pjsip_cred_info_Object, scheme), 0,        "Scheme"    },    {        "username", T_OBJECT_EX,        offsetof(pjsip_cred_info_Object, username), 0,        "User name"    },    {        "data", T_OBJECT_EX,        offsetof(pjsip_cred_info_Object, data), 0,        "The data, which can be a plaintext password or a hashed digest. "    },    {        "data_type", T_INT, offsetof(pjsip_cred_info_Object, data_type), 0,        "Type of data"    },        {NULL}  /* Sentinel */};/* * pjsip_cred_info_Type */static PyTypeObject pjsip_cred_info_Type ={    PyObject_HEAD_INIT(NULL)    0,                              /*ob_size*/    "py_pjsua.PJSIP_Cred_Info",      /*tp_name*/    sizeof(pjsip_cred_info_Object),  /*tp_basicsize*/    0,                              /*tp_itemsize*/    (destructor)pjsip_cred_info_dealloc,/*tp_dealloc*/    0,                              /*tp_print*/    0,                              /*tp_getattr*/    0,                              /*tp_setattr*/    0,                              /*tp_compare*/    0,                              /*tp_repr*/    0,                              /*tp_as_number*/    0,                              /*tp_as_sequence*/    0,                              /*tp_as_mapping*/    0,                              /*tp_hash */    0,                              /*tp_call*/    0,                              /*tp_str*/    0,                              /*tp_getattro*/    0,                              /*tp_setattro*/    0,                              /*tp_as_buffer*/    Py_TPFLAGS_DEFAULT,             /*tp_flags*/    "PJSIP Cred Info objects",       /* tp_doc */    0,                              /* tp_traverse */    0,                              /* tp_clear */    0,                              /* tp_richcompare */    0,                              /* tp_weaklistoffset */    0,                              /* tp_iter */    0,                              /* tp_iternext */    0,                              /* tp_methods */    pjsip_cred_info_members,         /* tp_members */    0,                              /* tp_getset */    0,                              /* tp_base */    0,                              /* tp_dict */    0,                              /* tp_descr_get */    0,                              /* tp_descr_set */    0,                              /* tp_dictoffset */    0,                              /* tp_init */    0,                              /* tp_alloc */    pjsip_cred_info_new,             /* tp_new */};/* * py_pjsua_thread_register * !added @ 061206 */static PyObject *py_pjsua_thread_register(PyObject *pSelf, PyObject *pArgs){	    pj_status_t status;	    const char *name;    PyObject *py_desc;    pj_thread_t *thread;    void *thread_desc;#if 0    int size;    int i;    int *td;#endif    if (!PyArg_ParseTuple(pArgs, "sO", &name, &py_desc))    {         return NULL;    }#if 0    size = PyList_Size(py_desc);    td = (int *)malloc(size * sizeof(int));    for (i = 0; i < size; i++)     {	if (!PyArg_Parse(PyList_GetItem(py_desc,i),"i", td[i])) 	{	    return NULL;	}    }    thread_desc = td;#else    thread_desc = malloc(sizeof(pj_thread_desc));#endif    status = pj_thread_register(name, thread_desc, &thread);    if (status == PJ_SUCCESS)	status = pj_thread_local_set(thread_id, (void*)1);    return Py_BuildValue("i",status);}/* * py_pjsua_logging_config_default * !modified @ 051206 */static PyObject *py_pjsua_logging_config_default(PyObject *pSelf,                                                    PyObject *pArgs){    logging_config_Object *obj;	    pjsua_logging_config cfg;    if (!PyArg_ParseTuple(pArgs, ""))    {        return NULL;    }        pjsua_logging_config_default(&cfg);    obj = (logging_config_Object *) logging_config_new		(&logging_config_Type,NULL,NULL);    obj->msg_logging = cfg.msg_logging;    obj->level = cfg.level;    obj->console_level = cfg.console_level;    obj->decor = cfg.decor;        return (PyObject *)obj;}/* * py_pjsua_config_default * !modified @ 051206 */static PyObject *py_pjsua_config_default(PyObject *pSelf, PyObject *pArgs){    config_Object *obj;    pjsua_config cfg;    if (!PyArg_ParseTuple(pArgs, ""))    {        return NULL;    }    pjsua_config_default(&cfg);    obj = (config_Object *) config_new(&config_Type, NULL, NULL);    obj->max_calls = cfg.max_calls;    obj->thread_cnt = cfg.thread_cnt;    return (PyObject *)obj;}/* * py_pjsua_media_config_default * !modified @ 051206 */static PyObject * py_pjsua_media_config_default(PyObject *pSelf,                                                PyObject *pArgs){    media_config_Object *obj;    pjsua_media_config cfg;    if (!PyArg_ParseTuple(pArgs, ""))    {        return NULL;    }    pjsua_media_config_default(&cfg);    obj = (media_config_Object *)PyType_GenericNew		(&media_config_Type, NULL, NULL);    obj->clock_rate = cfg.clock_rate;    obj->ec_options = cfg.ec_options;    obj->ec_tail_len = cfg.ec_tail_len;    obj->has_ioqueue = cfg.has_ioqueue;    obj->ilbc_mode = cfg.ilbc_mode;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -