private void updateVideoFileStatus()

in src/main/java/com/aws/iot/edgeconnectorforkvs/videouploader/callback/UploadCallBack.java [82:119]


    private void updateVideoFileStatus(Long timecodeMs) {
        boolean isFileUploaded = false;
        ListIterator<VideoFile> videoFileIter = videoFiles.listIterator(videoFiles.size());
        while (videoFileIter.hasPrevious()) {
            VideoFile videoFile = videoFileIter.previous();
            if (videoFile.getVideoDate().before(new Date(timecodeMs))) {
                if (uploadingFile != null && uploadingFile != videoFile) {
                    /* When we upload different file, it means the previous one has been uploaded. */
                    isFileUploaded = true;
                    uploadedFile = uploadingFile;
                    uploadedFile.setUploaded(true);
                    VideoRecordVisitor.markVideoAsUploaded(uploadedFile);
                }
                uploadingFile = videoFile;

                if (isFileUploaded) {
                    /* Check if any earlier video hasn't been marked as uploaded. It happened when we merge a video
                     * file that doesn't have any valid fragment. For example, there are videos to be uploaded:
                     *      video_100.mkv,
                     *      video_200.mkv,
                     *      video_300.mkv.
                     * We may get ACK of fragment timecode 201 and 301.  In this case, we need a forward search to
                     * mark video_100.mkv as an uploaded one.
                     * */
                    while (videoFileIter.hasPrevious()) {
                        VideoFile earlierVideoFile = videoFileIter.previous();
                        if (!earlierVideoFile.isUploaded()) {
                            earlierVideoFile.setUploaded(true);
                            VideoRecordVisitor.markVideoAsUploaded(earlierVideoFile);
                            update(timecodeMs, earlierVideoFile);
                        }
                    }
                }

                break;
            }
        }
    }