/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nifi.controller.queue;
/**
* Represents the status of a Drop FlowFile Request that has been issued to
* a {@link FlowFileQueue}. When a queue is requested to drop its FlowFiles,
* that process may be rather lengthy in the case of a poorly behaving
* FlowFileRepository or if the destination Processor is polling from the
* queue using a filter that is misbehaving. As a result, the dropping of
* FlowFiles is performed asynchronously.
*
* This status object provides information about how far along in the process
* we currently are and information about the success or failure of the
* operation.
*/
public interface DropFlowFileStatus {
/**
* @return the identifier of the request to drop FlowFiles from the queue
*/
String getRequestIdentifier();
/**
* @return the date/time (in milliseconds since epoch) at which the request to
* drop the FlowFiles from a queue was submitted
*/
long getRequestSubmissionTime();
/**
* @return the date/time (in milliseconds since epoch) at which the status of the
* request was last updated
*/
long getLastUpdated();
/**
* @return the size of the queue when the drop request was issued or <code>null</code> if
* it is not yet known, which can happen if the {@link DropFlowFileState} is
* {@link DropFlowFileState#WAITING_FOR_LOCK}.
*/
QueueSize getOriginalSize();
/**
* @return the current size of the queue or <code>null</code> if it is not yet known
*/
QueueSize getCurrentSize();
/**
* @return a QueueSize representing the number of FlowFiles that have been dropped for this request
* and the aggregate size of those FlowFiles
*/
QueueSize getDroppedSize();
/**
* @return the current state of the operation
*/
DropFlowFileState getState();
/**
* @return the reason that the state is set to a Failure state, or <code>null</code> if the state is not {@link DropFlowFileState#FAILURE}.
*/
String getFailureReason();
}