You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (JIRA)" <ji...@apache.org> on 2010/09/30 10:09:33 UTC

[jira] Commented: (HTTPCLIENT-1004) EofSensorInputStreams available() always returns 0

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1004?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12916409#action_12916409 ] 

Oleg Kalnichevski commented on HTTPCLIENT-1004:
-----------------------------------------------

EofSensorInputStream is a wrapper class, which has no way of knowing how much data is buffered by the wrapped class other than delegating the call to the wrapped class. ContentLengthInputStream, ChunkedInputStream and IdentityInputStream classes in the 4.1 branch implement #available(). 

Are you sure you are using the latest 4.1 alpha and not 4.0.x?

Oleg

> EofSensorInputStreams available() always returns 0
> --------------------------------------------------
>
>                 Key: HTTPCLIENT-1004
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1004
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 4.1 Alpha2
>         Environment: win 7 x64, netbeans 6.9.1, jdk6_21
>            Reporter: oliver  z
>
> i just wrote a little mp3 audio player which retrieves a stream and plays it. 
> to make sure the user does not play further than the song has been stored into ram, i thought i just use the available() method from the class EofSensorInputStream.
> But this method always returns 0 (normal http connection), casting to a ByteArrayInputStream would be nice, but thats not working... so i took a look at the implementation of available():
> http://www.docjar.com/html/api/org/apache/http/conn/EofSensorInputStream.java.html
>   165       @Override
>   166       public int available() throws IOException {
>   167           int a = 0; // not -1
>   168   
>   169           if (isReadAllowed()) {
>   170               try {
>   171                   a = wrappedStream.available();
>   172                   // no checkEOF() here, available() can't trigger EOF
>   173               } catch (IOException ex) {
>   174                   checkAbort();
>   175                   throw ex;
>   176               }
>   177           }
>   178   
>   179           return a;
>   180       }
> wrappedStream is an InputStream, and InputStream says to available():
> The available method for class InputStream always returns 0. 
> This method should be overridden by subclasses. 
> Im not sure if this is a bug or a feature request
> Is there any other way how i can check how many bytes has been transfered into ram?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org