Thoralf Rickert wrote:

Hi!

I'm not subribed to the list, so please make a CC to my address...

I'm working on a small WebDAV application based on the org.apache.webdav library. For user feedback it is necessary to know how many bytes a Put request has already finished (0%...25%...50%...75%...100%) (especially for big files). Because the WebDAV PutMethod extends the httpclient PutMethod which extends the
org.apache.commons.httpclient.methods.EntityEnclosingMethod,
I would like to "submit" a small patch, which makes it possible to get the number of already sent bytes in a "controlling thread"....Here is the code:


package org.apache.commons.httpclient.methods;
[...]
public abstract class EntityEnclosingMethod extends GetMethod {
[...]
  private long writtenBytes = 0;
[...]
  protected boolean writeRequestBody(HttpState state,
                                     HttpConnection conn)
      throws IOException, HttpException {

    [....]
    writtenBytes = 0;
    byte[] tmp = new byte[4096];
    //int total = 0;
    int i = 0;
    while ((i = instream.read(tmp)) >= 0) {
      outstream.write(tmp, 0, i);
      //total += i;
      writtenBytes += i;
    }
    [....]
  }

  /**
   * Returns the Number of Request Body Bytes send to the server
   */
  public long getWrittenRequestBodyBytes() {
    return this.writtenBytes;
  }
}

If I would start the HttpConnection in a subthread I could call the getWrittenRequestBodyBytes() method (or however you call it) during upload to get the number of transfered bytes. So I can show the user, that the application still works...

Do you think, that this small patch is useful for you too or do you know another way?

Thanks,
Thoralf Rickert



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to