Navigation


Changeset 639:95a784729cac in freeDiameter for freeDiameter/tests/testsess.c


Ignore:
Timestamp:
Dec 20, 2010, 1:07:06 PM (13 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
Message:

Added new opaque pointer to fd_sess_handler_create and fd_disp_register for usability. Bumped API version number.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • freeDiameter/tests/testsess.c

    r403 r639  
    4545        char *  sid;    /* the session with which the data was registered */
    4646        int  *  freed;  /* location where to write the freed status */
     47        void *  opaque; /* if opaque was provided, this is the value we expect */
    4748};
    4849
    49 static void mycleanup( struct mystate * data, char * sid )
     50static void mycleanup( struct mystate * data, char * sid, void * opaque )
    5051{
    5152        /* sanity */
     
    5657        if (data->freed)
    5758                *(data->freed) += 1;
     59        if (data->opaque) {
     60                CHECK( 1, opaque == data->opaque ? 1 : 0 ); 
     61        }
    5862        /* Now, free the data */
    5963        free(data->sid);
     
    7377        return new;
    7478}
     79
     80void * g_opaque = (void *)"test";
    7581       
    7682
     
    8894        /* Test functions related to handlers (simple situation) */
    8995        {
    90                 CHECK( 0, fd_sess_handler_create ( &hdl1, mycleanup ) );
    91                 CHECK( 0, fd_sess_handler_create ( &hdl2, mycleanup ) );
    92                 CHECK( 0, fd_sess_handler_destroy( &hdl2 ) );
    93                 CHECK( 0, fd_sess_handler_create ( &hdl2, mycleanup ) );
     96                void * testptr = NULL;
     97                CHECK( 0, fd_sess_handler_create ( &hdl1, mycleanup, NULL ) );
     98                CHECK( 0, fd_sess_handler_create ( &hdl2, mycleanup, NULL ) );
     99                CHECK( 0, fd_sess_handler_destroy( &hdl2, &testptr ) );
     100                CHECK( 1, testptr == NULL ? 1 : 0 );
     101                CHECK( 0, fd_sess_handler_create ( &hdl2, mycleanup, g_opaque ) );
    94102                #if 0
    95103                fd_sess_dump_hdl(0, hdl1);
     
    237245                int freed[6];
    238246                struct timespec timeout;
     247                void * testptr = NULL;
    239248               
    240249                /* Create three sessions */
     
    267276                CHECK( NULL, tms );
    268277               
    269                 mycleanup(ms[0], str1);
    270                 mycleanup(ms[1], str1);
     278                mycleanup(ms[0], str1, NULL);
     279                mycleanup(ms[1], str1, NULL);
    271280               
    272281                /* Now create 6 states */
     
    281290                ms[4] = new_state(str1, &freed[4]);
    282291                ms[5] = new_state(str1, &freed[5]);
     292                ms[5]->opaque = g_opaque;
    283293                str2 = strdup(str1);
    284294                CHECK( 1, str2 ? 1 : 0 );
     
    308318               
    309319                /* Destroy handler 2 */
    310                 CHECK( 0, fd_sess_handler_destroy( &hdl2 ) );
     320                CHECK( 0, fd_sess_handler_destroy( &hdl2, &testptr ) );
    311321                CHECK( 0, freed[0] );
    312322                CHECK( 1, freed[1] );
     
    315325                CHECK( 1, freed[4] );
    316326                CHECK( 1, freed[5] );
     327                CHECK( 1, testptr == g_opaque ? 1 : 0 );
    317328               
    318329                #if 1
     
    349360                CHECK( 0, fd_sess_state_retrieve( hdl1, sess1, &tms ) );
    350361                CHECK( 0, fd_sess_getsid(sess1, &str1) );
    351                 mycleanup(tms, str1);
     362                mycleanup(tms, str1, NULL);
    352363        }
    353364       
Note: See TracChangeset for help on using the changeset viewer.