public void report ( ReportRequest req ) { startIfStopped ( ) ; statistics . totalReports . incrementAndGet ( ) ; statistics . reportedOperations . addAndGet ( req . getOperationsCount ( ) ) ; Stopwatch w = Stopwatch . createStarted ( ticker ) ; boolean reported = reportAggregator . report ( req ) ; statistics . totalReportCacheUpdateTimeMillis . addAndGet ( w . elapsed ( TimeUnit . MILLISECONDS ) ) ; if ( ! reported ) { try { statistics . directReports . incrementAndGet ( ) ; w . reset ( ) . start ( ) ; transport . services ( ) . report ( serviceName , req ) . execute ( ) ; statistics . totalTransportedReportTimeMillis . addAndGet ( w . elapsed ( TimeUnit . MILLISECONDS ) ) ; } catch ( IOException e ) { log . atSevere ( ) . withCause ( e ) . log ( "direct send of a report request %s failed" , req ) ; } } if ( isRunningSchedulerDirectly ( ) ) { try { scheduler . run ( false /* don't block */ ) ; } catch ( InterruptedException e ) { log . atSevere ( ) . withCause ( e ) . log ( "direct run of scheduler failed" ) ; } } logStatistics ( ) ; }
Process a report request .