1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.commons.net.io; 19 20 import java.util.EventObject; 21 22 /** 23 * A CopyStreamEvent is triggered after every write performed by a 24 * stream copying operation. The event stores the number of bytes 25 * transferred by the write triggering the event as well as the total 26 * number of bytes transferred so far by the copy operation. 27 * <p> 28 * <p> 29 * @see CopyStreamListener 30 * @see CopyStreamAdapter 31 * @see Util 32 * @author <a href="mailto:savarese@apache.org">Daniel F. Savarese</a> 33 * @version $Id: CopyStreamEvent.java 489397 2006-12-21 16:28:51Z rwinston $ 34 */ 35 public class CopyStreamEvent extends EventObject 36 { 37 /** 38 * Constant used to indicate the stream size is unknown. 39 */ 40 public static final long UNKNOWN_STREAM_SIZE = -1; 41 42 private int bytesTransferred; 43 private long totalBytesTransferred; 44 private long streamSize; 45 46 /** 47 * Creates a new CopyStreamEvent instance. 48 * @param source The source of the event. 49 * @param totalBytesTransferred The total number of bytes transferred so 50 * far during a copy operation. 51 * @param bytesTransferred The number of bytes transferred during the 52 * write that triggered the CopyStreamEvent. 53 * @param streamSize The number of bytes in the stream being copied. 54 * This may be set to <code>UNKNOWN_STREAM_SIZE</code> if the 55 * size is unknown. 56 */ 57 public CopyStreamEvent(Object source, long totalBytesTransferred, 58 int bytesTransferred, long streamSize) 59 { 60 super(source); 61 this.bytesTransferred = bytesTransferred; 62 this.totalBytesTransferred = totalBytesTransferred; 63 this.streamSize = streamSize; 64 } 65 66 /** 67 * Returns the number of bytes transferred by the write that triggered 68 * the event. 69 * @return The number of bytes transferred by the write that triggered 70 * the vent. 71 */ 72 public int getBytesTransferred() 73 { 74 return bytesTransferred; 75 } 76 77 /** 78 * Returns the total number of bytes transferred so far by the copy 79 * operation. 80 * @return The total number of bytes transferred so far by the copy 81 * operation. 82 */ 83 public long getTotalBytesTransferred() 84 { 85 return totalBytesTransferred; 86 } 87 88 /** 89 * Returns the size of the stream being copied. 90 * This may be set to <code>UNKNOWN_STREAM_SIZE</code> if the 91 * size is unknown. 92 * @return The size of the stream being copied. 93 */ 94 public long getStreamSize() 95 { 96 return streamSize; 97 } 98 }