// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.asn1;

import java.nio.channels.FileChannel;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.ByteArrayInputStream;
import java.io.InputStream;

class StreamUtil
{
    static int findLimit(final InputStream inputStream) {
        if (inputStream instanceof LimitedInputStream) {
            return ((LimitedInputStream)inputStream).getLimit();
        }
        if (inputStream instanceof ASN1InputStream) {
            return ((ASN1InputStream)inputStream).getLimit();
        }
        if (inputStream instanceof ByteArrayInputStream) {
            return ((ByteArrayInputStream)inputStream).available();
        }
        if (inputStream instanceof FileInputStream) {
            try {
                final FileChannel channel = ((FileInputStream)inputStream).getChannel();
                final long n = (channel != null) ? channel.size() : 2147483647L;
                if (n < 2147483647L) {
                    return (int)n;
                }
            }
            catch (final IOException ex) {}
        }
        final long maxMemory = Runtime.getRuntime().maxMemory();
        if (maxMemory > 2147483647L) {
            return Integer.MAX_VALUE;
        }
        return (int)maxMemory;
    }
}
