tr_session_stats single;
tr_session_stats old;
time_t startTime;
+ tr_bool isDirty;
};
static char*
session->sessionStats = stats;
}
+static struct tr_stats_handle *
+getStats( const tr_session * session )
+{
+ return session ? session->sessionStats : NULL;
+}
+
void
-tr_statsClose( tr_session * session )
+tr_statsSaveDirty( tr_session * session )
{
- tr_session_stats cumulative = STATS_INIT;
+ struct tr_stats_handle * h = getStats( session );
+ if( ( h != NULL ) && h->isDirty )
+ {
+ tr_session_stats cumulative = STATS_INIT;
+ tr_sessionGetCumulativeStats( session, &cumulative );
+ saveCumulativeStats( session, &cumulative );
+ h->isDirty = FALSE;
+ }
+}
- tr_sessionGetCumulativeStats( session, &cumulative );
- saveCumulativeStats( session, &cumulative );
+void
+tr_statsClose( tr_session * session )
+{
+ tr_statsSaveDirty( session );
tr_free( session->sessionStats );
session->sessionStats = NULL;
}
-static struct tr_stats_handle *
-getStats( const tr_session * session )
-{
- return session ? session->sessionStats : NULL;
-}
-
/***
****
***/
struct tr_stats_handle * s;
if( ( s = getStats( session ) ) )
+ {
s->single.uploadedBytes += bytes;
+ s->isDirty = TRUE;
+ }
}
void
struct tr_stats_handle * s;
if( ( s = getStats( session ) ) )
+ {
s->single.downloadedBytes += bytes;
+ s->isDirty = TRUE;
+ }
}
void