Jason van Zyl wrote:
I think you should explain some of the transport features as well. I know what you, Greg, Jan, and Jesse have done and it's significant and you should outline those.

Mercury transport layer is an absolute work of art done by Jetty folks. It's a complete implementation of HTTP stack that sits on top of java nio framework. Then they added transactional support for file transfer - transport guarantees delivery of intact binary to or from a remote server. Then they added observable up/down streams. Then these streams could be made verifiable with stream verifier abstraction - checksums, crypto signatures. As a result - client does not have to deal with these gory details - transport layer takes care of that.

One interesting optimization feature: a stream verifier could be declared "sufficient", so if it verifies a stream, all other verifies are not even asked any more.

On the outside - transport supports two way transfer of files and in-memory streams. [The latter are used in Mercury for pom and metadata processing: unless passed through conflict resolution - these bytes never hit the disk.] It accepts a request for multiple transfers and runs them in parallel, fully utilizing throughput abilities of our machines and multiplexing nature of nio.

Now a story: this - caused an interesting problem in wagon implementation: wagon APIs got rid of the good old pattern (byte [] buf, int off, int len) and replaced it with (byte [] buf, int len) thus presuming that data always starts at the beginning of a buffer. But jetty/nio optimizes buffer usage and offset is actively used in all the interactions. To pass data to wagon infrastructure - I had to create a new buffer and copy data to it's start, somewhat loosing in efficiency [of cause - it would not be an issue in c]
Nexus actually will accept a simple PUT, but it doesn't do WebDAV. We might put it back but it's just PUT.
My bad - terminology.
But we could setup a simple WebDAV server using Jetty and a WebDAV servlet to try it. You could probably snag the tests from the WebDAV wagon. I assume there are some Jetty+
Good point, will do.

I would be interested in seeing a branch created with this as the default http provider. If it's a complete replacement for the lightweight/regular/webdav wagons then I think this would be a good thing.

I will grab the 2.1 trunk and do that

Thanks,
Oleg

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

Reply via email to