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); }
@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(); }); }