Ignore:
Timestamp:
Jul 15, 2011 6:37:07 AM (13 years ago)
Author:
bennylp
Message:

Re #1284 (event framework): unsubscribing does not need to know publisher

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/event.c

    r3648 r3653  
    7474{ 
    7575    PJ_ASSERT_RETURN(epub && esub && esub->cb, PJ_EINVAL); 
     76    /* Must not currently subscribe to anything */ 
     77    PJ_ASSERT_RETURN(esub->subscribe_to == NULL, PJ_EINVALIDOP); 
     78 
    7679    pj_list_push_back(&epub->subscription_list, esub); 
     80    esub->subscribe_to = epub; 
    7781    return PJ_SUCCESS; 
    7882} 
    7983 
    80 PJ_DEF(pj_status_t) pjmedia_event_unsubscribe( pjmedia_event_publisher *epub, 
    81                                                pjmedia_event_subscription *esub) 
     84PJ_DEF(pj_status_t) pjmedia_event_unsubscribe(pjmedia_event_subscription *esub) 
    8285{ 
    83     PJ_ASSERT_RETURN(epub && esub, PJ_EINVAL); 
    84     PJ_ASSERT_RETURN(pj_list_find_node(&epub->subscription_list, esub)==esub, 
    85                      PJ_ENOTFOUND); 
    86     pj_list_erase(esub); 
     86    PJ_ASSERT_RETURN(esub, PJ_EINVAL); 
     87    if (esub->subscribe_to) { 
     88        PJ_ASSERT_RETURN( 
     89            pj_list_find_node(&esub->subscribe_to->subscription_list, 
     90                              esub)==esub, PJ_ENOTFOUND); 
     91        pj_list_erase(esub); 
     92        esub->subscribe_to = NULL; 
     93    } 
    8794    return PJ_SUCCESS; 
    8895} 
Note: See TracChangeset for help on using the changeset viewer.