static void saveCumulativeStats( const tr_session * session, const tr_session_stats * s ) { char * filename; char * path=NULL; tr_benc top; tr_bencInitDict( &top, 5 ); tr_bencDictAddInt( &top, "downloaded-bytes", s->downloadedBytes ); tr_bencDictAddInt( &top, "files-added", s->filesAdded ); tr_bencDictAddInt( &top, "seconds-active", s->secondsActive ); tr_bencDictAddInt( &top, "session-count", s->sessionCount ); tr_bencDictAddInt( &top, "uploaded-bytes", s->uploadedBytes ); path = filename = getFilename( session ); #ifdef WIN32 path = ConvertUtf8ToTChar(filename); #endif tr_deepLog( __FILE__, __LINE__, NULL, "Saving stats to \"%s\"", path ); tr_bencToFile( &top, TR_FMT_JSON, path ); #ifdef WIN32 tr_free(path); #endif tr_free( filename ); tr_bencFree( &top ); }
void tr_eventClose( tr_handle * handle ) { handle->events->die = TRUE; tr_deepLog( __FILE__, __LINE__, NULL, "closing trevent pipe" ); EVUTIL_CLOSESOCKET( handle->events->fds[1] ); }
void tr_eventClose( tr_session * session ) { assert( tr_isSession( session ) ); session->events->die = TRUE; tr_deepLog( __FILE__, __LINE__, NULL, "closing trevent pipe" ); EVUTIL_CLOSESOCKET( session->events->fds[1] ); }
static void saveCumulativeStats (const tr_session * session, const tr_session_stats * s) { char * filename; tr_variant top; tr_variantInitDict (&top, 5); tr_variantDictAddInt (&top, TR_KEY_downloaded_bytes, s->downloadedBytes); tr_variantDictAddInt (&top, TR_KEY_files_added, s->filesAdded); tr_variantDictAddInt (&top, TR_KEY_seconds_active, s->secondsActive); tr_variantDictAddInt (&top, TR_KEY_session_count, s->sessionCount); tr_variantDictAddInt (&top, TR_KEY_uploaded_bytes, s->uploadedBytes); filename = getFilename (session); tr_deepLog (__FILE__, __LINE__, NULL, "Saving stats to \"%s\"", filename); tr_variantToFile (&top, TR_VARIANT_FMT_JSON, filename); tr_free (filename); tr_variantFree (&top); }