View Javadoc

    1   /*
    2    *  Licensed to the Apache Software Foundation (ASF) under one
    3    *  or more contributor license agreements.  See the NOTICE file
    4    *  distributed with this work for additional information
    5    *  regarding copyright ownership.  The ASF licenses this file
    6    *  to you under the Apache License, Version 2.0 (the
    7    *  "License"); you may not use this file except in compliance
    8    *  with the License.  You may obtain a copy of the License at
    9    *
    10   *    http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   *  Unless required by applicable law or agreed to in writing,
    13   *  software distributed under the License is distributed on an
    14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    15   *  KIND, either express or implied.  See the License for the
    16   *  specific language governing permissions and limitations
    17   *  under the License.
    18   *
    19   */
    20  package org.apache.mina.core.file;
    21
    22  import java.nio.channels.FileChannel;
    23
    24  /**
    25   * Indicates the region of a file to be sent to the remote host.
    26   *
    27   * @author <a href="http://mina.apache.org">Apache MINA Project</a>
    28   */
    29  public interface FileRegion {
    30
    31      /**
    32       * The open <tt>FileChannel<tt> from which data will be read to send to
    33       * remote host.
    34       *
    35       * @return  An open <tt>FileChannel<tt>.
    36       */
    37      FileChannel getFileChannel();
    38
    39      /**
    40       * The current file position from which data will be read.
    41       *
    42       * @return  The current file position.
    43       */
    44      long getPosition();
    45
    46      /**
    47       * Updates the current file position based on the specified amount.  This
    48       * increases the value returned by {@link #getPosition()} and
    49       * {@link getWrittenBytes} by the given amount and decreases the value
    50       * returned by {@link #getCount()} by the given {@code amount}.
    51       *
    52       * @param amount  The new value for the file position.
    53       */
    54      void update(long amount);
    55
    56      /**
    57       * The number of bytes remaining to be written from the file to the remote
    58       * host.
    59       *
    60       * @return  The number of bytes remaining to be written.
    61       */
    62      long getRemainingBytes();
    63
    64      /**
    65       * The total number of bytes already written.
    66       *
    67       * @return  The total number of bytes already written.
    68       */
    69      long getWrittenBytes();
    70
    71      /**
    72       * Provides an absolute filename for the underlying FileChannel.
    73       *
    74       * @return  the absolute filename, or <tt>null</tt> if the FileRegion
    75       *   does not know the filename
    76       */
    77      String getFilename();
    78  }