/** * Copyright (c) 2012, University of Konstanz, Distributed Systems Group * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the University of Konstanz nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jscsi.initiator.connection; import java.nio.ByteBuffer; /** * <h1>TargetCapacityInformations</h1> * <p> * This class encapsulates the informations about the capacity of an iSCSI Target. * * @author Volker Wildi */ public final class TargetCapacityInformations { // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- /** Multiplicator from bytes to mega bytes. */ private static final int MEGA_BYTES = 1024 * 1024; // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- /** The number of blocks. */ private long size; /** The block size (in bytes). */ private long blockSize; // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- /** * Default constructor to create a new, empty <code>TargetCapacityInformations</code> object. */ public TargetCapacityInformations() { } // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- /** * Returns the number of blocks of the connected target. * * @return Number of blocks. */ public final long getSize() { return size; } /** * Returns the block size (in bytes). * * @return The size of one block (in bytes). */ public final long getBlockSize() { return blockSize; } // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- /** * This method deserializes from <code>buf</code> the capacity informations * of the iSCSI Target. * * @param buf * The input buffer to read from. */ public final void deserialize(final ByteBuffer buf) { size = buf.getInt(); blockSize = buf.getInt(); } // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- /** {@inheritDoc} */ @Override public final String toString() { return "Block Size: " + blockSize + "B, Size: " + size + " blocks, Total Capacity: " + (size * blockSize) / MEGA_BYTES + " MB"; } // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- }