예제 #1
0
 protected void scheduleUploadCheck() {
   LOG.trace("Attempt to execute upload check: {}", uploadCheckInProgress);
   synchronized (uploadCheckLock) {
     if (!uploadCheckInProgress) {
       LOG.trace("Scheduling upload check with timeout: {}", strategy.getUploadCheckPeriod());
       uploadCheckInProgress = true;
       executorContext
           .getScheduledExecutor()
           .schedule(
               new Runnable() {
                 @Override
                 public void run() {
                   synchronized (uploadCheckLock) {
                     uploadCheckInProgress = false;
                   }
                   uploadIfNeeded();
                 }
               },
               strategy.getUploadCheckPeriod(),
               TimeUnit.SECONDS);
     } else {
       LOG.trace("Upload check is already scheduled!");
     }
   }
 }
예제 #2
0
 private void processUploadDecision(LogUploadStrategyDecision decision) {
   switch (decision) {
     case UPLOAD:
       transport.sync();
       break;
     case NOOP:
       if (strategy.getUploadCheckPeriod() > 0 && storage.getStatus().getRecordCount() > 0) {
         scheduleUploadCheck();
       }
       break;
     default:
       break;
   }
 }