1c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrompackage org.bouncycastle.asn1;
2c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
3c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromimport java.io.InputStream;
4c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
5c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstromabstract class LimitedInputStream
6c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        extends InputStream
7c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom{
8c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    protected final InputStream _in;
96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private int _limit;
10c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
11c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    LimitedInputStream(
126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        InputStream in,
136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        int         limit)
14c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
15c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        this._in = in;
166e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this._limit = limit;
17c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
18c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom
196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    int getRemaining()
206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        // TODO: maybe one day this can become more accurate
226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return _limit;
236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
25c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    protected void setParentEofDetect(boolean on)
26c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    {
27c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        if (_in instanceof IndefiniteLengthInputStream)
28c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        {
29c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom            ((IndefiniteLengthInputStream)_in).setEofOn00(on);
30c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom        }
31c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom    }
32c37f4a04ef89e73a39a59f3c5a179af8c8ab5974Brian Carlstrom}
33