package org.limewire.bittorrent.bencoding;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.channels.ReadableByteChannel;
/**
* A token used for the parsing of a Long value.
* Values over Long.MAX_VALUE throw an <code>IOException</code>.
*/
class BELong extends NumberToken<Long> {
private static final BigInteger MAX = BigInteger.valueOf(Long.MAX_VALUE);
public BELong(ReadableByteChannel chan, byte terminator, byte firstByte) {
super(chan, terminator, firstByte);
}
public BELong(ReadableByteChannel chan) {
super(chan);
}
@Override
public int getType() {
return LONG;
}
@Override
protected Long getResult(BigInteger rawValue) throws IOException {
if (rawValue.compareTo(MAX) > 0)
throw new IOException("too big");
return rawValue.longValue() * multiplier;
}
}