Threading on pjsua, or just timer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Here are a couple tips for timer:
- don't need to create your own timer heap unless you really need (and
don't forget to poll it), just use the existing one, see
pjsua_schedule_timer()
- take care of pj_timer_entry var lifetime, it needs to remain valid
until the timer callback is invoked or the timer gets cancelled.

BR,
nanang


2012/3/29 Andrzej Grzelak <andrew8666 at gmail.com>:
> Problem is it wont work in on_call_state_changed, whole app crashing.
>
> I've tried using pj_timer_heap_schedule, but without success ;/
>
> ? ? ? ? ? ? ? ?pj_time_val timeDelay;
> ? ? ? ? ? ? ? ?pj_timer_entry timerEntry;
> ? ? ? ? ? ? ? ?pj_timer_heap_t *timer;
> ? ? ? ? ? ? ? ?pj_pool_t *pool;
> ? ? ? ? ? ? ? ?timeDelay.sec=5;
> ? ? ? ? ? ? ? ?timeDelay.msec=0;
>
> ? ? ? ? ? ? ? ?pj_timer_entry_init(&timerEntry, 1, NULL, &timerCallback);
>
> ? ? ? ? ? ? ? ?pool = pj_pool_create( pjsua_get_pool_factory(), NULL,
> pj_timer_heap_mem_size(1), 4000, NULL);
> ? ? ? ? ? ? ? ?pj_timer_heap_create(pool, 1, &timer);
> ? ? ? ? ? ? ? ?pj_timer_heap_schedule(timer, &timerEntry,&timeDelay);
>
> With such code it doesn't crash but it dont work too ;/
>
> W dniu 26 marca 2012 10:19 u?ytkownik coopara <coopara at go2.pl> napisa?:
>> Hi,
>>
>> Use something like this:
>>
>> pj_time_val timeDelay;
>> pj_timer_entry timerEntry;
>>
>> timeDelay.sec=5;
>> timeDelay.msec=0;
>>
>> //initialize timer
>> pj_timer_entry_init(&timerEntry, 0, NULL, &timerCallback);
>>
>> //set timer
>> pjsip_endpt_schedule_timer(pjsua_get_pjsip_endpt(), &timerEntry,
>> &timeDelay);
>>
>>
>> //timer operation
>> static void timerCallback(pj_timer_heap_t *timer_heap, pj_timer_entry
>> *entry)
>> {
>> ? ?PJ_UNUSED_ARG(timer_heap);
>>
>> ? ? ? ?//some action
>>
>> ? ? ? ?//cancel timer
>> ? ? ? ?pjsip_endpt_cancel_timer(pjsua_get_pjsip_endpt(), entry);
>> ? ? ? ?//or start all over again
>> ? ? ? ?//pjsip_endpt_schedule_timer(pjsua_get_pjsip_endpt(), entry,
>> ? ? ? ?//&timeDelay);
>> }
>>
>>
>>
>>
>> Dnia 25 marca 2012 15:26 Andrzej Grzelak <andrew8666 at gmail.com> napisa?(a):
>>
>>> I'm using sample pjsua code, and i need to do some threading or just
>>> set timer on action... Here is code:
>>>
>>> /* Callback called by the library when call's state has changed */
>>> static void on_call_state(pjsua_call_id call_id, pjsip_event *e)
>>> {
>>> ? ? pjsua_call_info ci;
>>>
>>> ? ? PJ_UNUSED_ARG(e);
>>> ? ? pjsua_call_get_info(call_id, &ci);
>>> ? ? PJ_LOG(2,(THIS_FILE, "Call %d state=%.*s", call_id,
>>> ? ? ? ? ? ? ? ? ? ? ? ?(int)ci.state_text.slen,
>>> ? ? ? ? ? ? ? ? ? ? ? ?ci.state_text.ptr));
>>> ? ? ? if(ci.state == PJSIP_INV_STATE_EARLY){
>>> ? ? ? ? ? ? ? ? ? ? ? //
>>> ? ? ? ? ? ? ? ? ? ? ? //
>>> ? ? ? ? ? ? ? ? ? ? ? //after 5 secs hangup call
>>> ? ? ? ? ? ? ? ? ? ? ? //
>>> ? ? ? ? ? ? ? ? ? ? ? //
>>> ? ? ? }
>>> ? ? ? if(ci.state == PJSIP_INV_STATE_DISCONNECTED ){
>>> ? ? ? ? ? ? ? PJ_LOG(2,(THIS_FILE, "Call %d reason: =%.*s (%d)", call_id,
>>> ? ? ? ? ? ? ? ? ? ? ? (int)ci.last_status_text.slen,
>>> ? ? ? ? ? ? ? ? ? ? ? ?ci.last_status_text.ptr,
>>> ? ? ? ? ? ? ? ? ? ? ? ?(int)ci.last_status));
>>> ? ? ? }
>>> }
>>>
>>>
>>> Can someone help me, and give just hints how to do it?
>>>
>>> _______________________________________________
>>> Visit our blog: http://blog.pjsip.org
>>>
>>> pjsip mailing list
>>> pjsip at lists.pjsip.org
>>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>>
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux