Ejemplo n.º 1
0
static void beacon_moon_bounce_timer_callback( void* ccvp )
{
    cloneclient_t *cc = (cloneclient_t*)ccvp;
    char* sought_uuid = cc->unacknowledged_beacon_uuid;

    BackgroundTimer_remove( beacon_moon_bounce_timerID );
    beacon_moon_bounce_timerID = 0;
    
    time_t tt = time(0);
    GHashTableIter iter;
    gpointer key, value;

    g_hash_table_iter_init (&iter, peers);
    while (g_hash_table_iter_next (&iter, &key, &value)) 
    {
	beacon_announce_t* ba = (beacon_announce_t*)value;
	if( !strcmp( ba->uuid, sought_uuid ))
	{
	    printf("it took %d seconds to get a beacon back from the server\n",
		   (int)(tt - cc->unacknowledged_beacon_sendTime) );
	    strcpy( cc->unacknowledged_beacon_uuid, "" );
	    cc->unacknowledged_beacon_sendTime = 0;
	    return;
	}
    }

    LogError( _("Collab: A beacon has not been received from the server"));
    LogError( _("Collab: Please ensure that UDP port 5670 is not firewalled."));
}
Ejemplo n.º 2
0
void collabclient_free( void** ccvp )
{
#ifdef BUILD_COLLAB
    
    cloneclient_t* cc = (cloneclient_t*)*ccvp;
    if( !cc )
	return;
    if( cc->magic_number != MAGIC_VALUE )
    {
	fprintf(stderr,"collabclient_free() called on an invalid client object!\n");
	return;
    }
    cc->magic_number = MAGIC_VALUE + 1;

    {
	int fd = 0;
	size_t fdsz = sizeof(fd);
	int rc = zmq_getsockopt( cc->subscriber, ZMQ_FD, &fd, &fdsz );
	GDrawRemoveReadFD( 0, fd, cc );
    }
    
    
    zsocket_destroy( cc->ctx, cc->snapshot   );
    zsocket_destroy( cc->ctx, cc->subscriber );
    zsocket_destroy( cc->ctx, cc->publisher  );
    BackgroundTimer_remove( cc->roundTripTimer );

    FontView* fv = FontViewFind( FontViewFind_byCollabPtr, cc );
    if( fv )
    {
	fv->b.collabClient = 0;
    }

    zhash_destroy (&cc->kvmap);
    free(cc->address);
    free(cc);
    *ccvp = 0;

#endif
}