/*******************************************************************************
* Copyright (c) 2004 Composent, Inc. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.filetransfer;
import java.util.Date;
import org.eclipse.ecf.filetransfer.events.IIncomingFileTransferReceiveStartEvent;
/**
* Incoming file transfer request. Instance implementing this interface are
* provided via calling the
* {@link IIncomingFileTransferReceiveStartEvent#receive(java.io.File)} method.
*
*/
public interface IIncomingFileTransfer extends IFileTransfer {
/**
* Get number of bytes received so far. If provider does not support
* reporting the number of bytes received, will return -1.
*
* @return long number of bytes received. Returns -1 if provider does not
* support reporting of number of bytes received during transfer
*/
public long getBytesReceived();
/**
* Get listener assigned to this incoming file transfer. May be <code>null</code> if no listener
* has been provided.
*
* @return listener the IFileTransferListener provided for this incoming file transfer.
*/
public IFileTransferListener getListener();
/**
* Get file range specification for this incoming file transfer instance. Will return
* <code>null</code> if the retrieval is of the entire file.
*
* @return file range specification for this incoming file transfer instance. Returns
* <code>null</code> if the retrieval is of the entire file.
*/
public IFileRangeSpecification getFileRangeSpecification();
/**
* Obtains the name of the remote file if possible. The name will typically but not
* necessarily be the same as the leaf part of the path to the remote file.
*
* @return The name of the remote file or <code>null</code> if no such name can be determined.
*
* @since 2.0
*/
public String getRemoteFileName();
/**
* Obtains the timestamp that reflects the time when the remote file was last
* modified if possible.
* @return The time the remote file was last modified or <code>null</code> if that
* information was not available.
* @since 2.0
*/
public Date getRemoteLastModified();
}