new mavl is working now
FossilOrigin-Name: 65a4eefffea57509c0d7fd573e53b15bf4a730ce297b7db182aaac796ea92448
This commit is contained in:
@ -37,110 +37,109 @@
|
||||
|
||||
|
||||
|
||||
static int cmp_by_addr(const mavldata_t * d1,const mavldata_t *d2)
|
||||
static int cmp_by_addr ( const void * d1, const void *d2 )
|
||||
{
|
||||
struct conn * c1=(struct conn *) d1->ptr;
|
||||
struct conn * c2=(struct conn *) d2->ptr;
|
||||
|
||||
return sock_cmpaddr((struct sockaddr*)&c1->addr,(struct sockaddr*)&c2->addr,1);
|
||||
struct conn * c1 = * ( void ** ) d1 ;
|
||||
struct conn * c2 = * ( void ** ) d2 ;
|
||||
|
||||
return sock_cmpaddr ( ( struct sockaddr* ) &c1->addr, ( struct sockaddr* ) &c2->addr, 1 );
|
||||
}
|
||||
|
||||
static int cmp_by_session_id(const mavldata_t *d1, const mavldata_t *d2)
|
||||
static int cmp_by_session_id ( const void *d1, const void *d2 )
|
||||
{
|
||||
struct conn * c1=(struct conn *) d1->ptr;
|
||||
struct conn * c2=(struct conn *) d2->ptr;
|
||||
return memcmp(c1->session_id,c2->session_id,16);
|
||||
struct conn * c1 = *( void ** ) d1;
|
||||
struct conn * c2 = *( void ** ) d2;
|
||||
return memcmp ( c1->session_id, c2->session_id, 16 );
|
||||
}
|
||||
|
||||
|
||||
struct connlist * connlist_create(int len)
|
||||
struct connlist * connlist_create ( int len )
|
||||
{
|
||||
|
||||
struct connlist * cl = malloc(sizeof(struct connlist));
|
||||
if (!cl)
|
||||
struct connlist * cl = malloc ( sizeof ( struct connlist ) );
|
||||
|
||||
if ( !cl )
|
||||
return 0;
|
||||
|
||||
|
||||
cl->by_addr = mavl_create(cmp_by_addr,0);
|
||||
|
||||
if (!cl->by_addr){
|
||||
free(cl);
|
||||
|
||||
|
||||
cl->by_addr = mavl_create_ptr ( cmp_by_addr, NULL );
|
||||
|
||||
if ( !cl->by_addr ) {
|
||||
free ( cl );
|
||||
return 0;
|
||||
}
|
||||
|
||||
cl->by_session_id = mavl_create(cmp_by_session_id,0);
|
||||
|
||||
|
||||
if (pthread_mutex_init(&cl->connlist_mutex,NULL)){
|
||||
mavl_destroy(cl->by_addr);
|
||||
free(cl);
|
||||
|
||||
cl->by_session_id = mavl_create_ptr ( cmp_by_session_id, NULL );
|
||||
|
||||
|
||||
if ( pthread_mutex_init ( &cl->connlist_mutex, NULL ) ) {
|
||||
mavl_destroy ( cl->by_addr );
|
||||
free ( cl );
|
||||
return 0;
|
||||
};
|
||||
|
||||
cl->len=len;
|
||||
|
||||
|
||||
cl->len = len;
|
||||
|
||||
return cl;
|
||||
}
|
||||
|
||||
void connlist_lock(struct connlist * cl)
|
||||
void connlist_lock ( struct connlist * cl )
|
||||
{
|
||||
pthread_mutex_lock(&cl->connlist_mutex);
|
||||
pthread_mutex_lock ( &cl->connlist_mutex );
|
||||
}
|
||||
|
||||
void connlist_unlock(struct connlist * cl)
|
||||
void connlist_unlock ( struct connlist * cl )
|
||||
{
|
||||
pthread_mutex_unlock(&cl->connlist_mutex);
|
||||
pthread_mutex_unlock ( &cl->connlist_mutex );
|
||||
}
|
||||
|
||||
|
||||
void connlist_destroy(struct connlist * cl)
|
||||
void connlist_destroy ( struct connlist * cl )
|
||||
{
|
||||
if (!cl)
|
||||
if ( !cl )
|
||||
return;
|
||||
|
||||
if (cl->by_addr)
|
||||
mavl_destroy(cl->by_addr);
|
||||
pthread_mutex_destroy(&cl->connlist_mutex);
|
||||
free(cl);
|
||||
|
||||
if ( cl->by_addr )
|
||||
mavl_destroy ( cl->by_addr );
|
||||
|
||||
pthread_mutex_destroy ( &cl->connlist_mutex );
|
||||
free ( cl );
|
||||
|
||||
}
|
||||
|
||||
|
||||
struct conn * connlist_get(struct connlist * cl, const struct sockaddr * addr)
|
||||
struct conn * connlist_get ( struct connlist * cl, const struct sockaddr * addr )
|
||||
{
|
||||
struct conn search;
|
||||
sock_copyaddr(&search.addr,addr);
|
||||
return mavl_get_ptr(cl->by_addr,&search);
|
||||
sock_copyaddr ( &search.addr, addr );
|
||||
return mavl_get_ptr ( cl->by_addr, &search );
|
||||
}
|
||||
|
||||
|
||||
struct conn * connlist_add(struct connlist * cl, struct conn * conn)
|
||||
struct conn * connlist_add ( struct connlist * cl, struct conn * conn )
|
||||
{
|
||||
if ( cl->len!=0)
|
||||
if (cl->by_addr->count>=cl->len)
|
||||
if ( cl->len != 0 )
|
||||
if ( cl->by_addr->count >= cl->len )
|
||||
return NULL;
|
||||
conn->connlist=cl;
|
||||
return mavl_add_ptr(cl->by_addr,conn);
|
||||
|
||||
conn->connlist = cl;
|
||||
return mavl_add_ptr ( cl->by_addr, conn );
|
||||
}
|
||||
|
||||
struct conn * connlist_get_by_session_id(struct connlist *cl, struct conn * conn)
|
||||
struct conn * connlist_get_by_session_id ( struct connlist *cl, struct conn * conn )
|
||||
{
|
||||
return mavl_get_ptr(cl->by_session_id,conn);
|
||||
return mavl_get_ptr ( cl->by_session_id, conn );
|
||||
}
|
||||
|
||||
struct conn * connlist_add_by_session_id(struct connlist * cl, struct conn * conn)
|
||||
struct conn * connlist_add_by_session_id ( struct connlist * cl, struct conn * conn )
|
||||
{
|
||||
return mavl_add_ptr(cl->by_session_id,conn);
|
||||
return mavl_add_ptr ( cl->by_session_id, conn );
|
||||
}
|
||||
|
||||
void connlist_remove(struct connlist *cl,struct conn * conn)
|
||||
void connlist_remove ( struct connlist *cl, struct conn * conn )
|
||||
{
|
||||
mavldata_t md;
|
||||
md.ptr=conn;
|
||||
mavl_del(cl->by_session_id,&md);
|
||||
md.ptr=conn;
|
||||
mavl_del(cl->by_addr,&md);
|
||||
void * md;
|
||||
md = conn;
|
||||
mavl_del ( cl->by_session_id, &md );
|
||||
md = conn;
|
||||
mavl_del ( cl->by_addr, &md );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user