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]

Reply via email to