public Promise<Void> processUpdate(Update update) {

    // Small hack for stopping typing indicator
    if (update instanceof UpdateMessage) {
      UpdateMessage message = (UpdateMessage) update;
      typingProcessor.onMessage(message.getPeer(), message.getSenderUid());
    }

    for (SequenceProcessor sequenceProcessor : sequenceProcessors) {
      Promise<Void> res = sequenceProcessor.process(update);
      if (res != null) {
        return res;
      }
    }

    return Promise.success(null);
  }
Ejemplo n.º 2
0
  @Override
  public void preStart() {
    alreadyInTemp = false; // Storage.isAlreadyInTemp(descriptor);
    isWriteToDestProvider = Storage.isFsPersistent() && !alreadyInTemp;

    srcReference = Storage.fileFromDescriptor(descriptor);
    if (srcReference == null) {
      if (LOG) {
        Log.d(TAG, "Error during file reference creating");
      }
      reportError();
      return;
    }

    if (isWriteToDestProvider) {
      destReference = Storage.createTempFile();
      if (destReference == null) {
        if (LOG) {
          Log.w(TAG, "Error during file dest reference creating");
        }
        reportError();
        return;
      }
    }

    srcReference
        .openRead()
        .flatMap(
            f -> {
              inputFile = f;
              if (isWriteToDestProvider) {
                return destReference.openWrite(srcReference.getSize());
              } else {
                return Promise.success(null);
              }
            })
        .flatMap(
            f -> {
              outputFile = f;

              crc32 = new CRC32();

              blocksCount = srcReference.getSize() / blockSize;
              if (srcReference.getSize() % blockSize != 0) {
                blocksCount++;
              }

              if (LOG) {
                Log.d(TAG, "Starting uploading " + blocksCount + " blocks");
                Log.d(TAG, "Requesting upload config...");
              }

              return api(new RequestGetFileUploadUrl(srcReference.getSize()));
            })
        .then(
            r -> {
              if (LOG) {
                Log.d(TAG, "Upload config loaded");
              }
              uploadConfig = r.getUploadKey();
              checkQueue();
            })
        .failure(
            e -> {
              if (LOG) {
                Log.w(TAG, "Error during initialization of upload");
              }
              reportError();
            });
  }