On Fri, 2 Mar 2001, Greg Stein wrote: > Getting long here. Watch out! :-)
other-thread. > BRIGADE = { FILE, EOS } # FILE bucket and EOS (End Of Stream) bucket > > becomes > > BRIGADE = { "packet header bytes", FILE, EOS } > > We inserted a header without touching the file. The output filter generates > a sendfile which contains an iovec for those header bytes. Blam! Out the > network it goes... :-) EXCELLENT. this is exactly the kind of thing that we'll need to do / use. i started on something like this - memory-based only. it involved chaining of bits of memory together, and you didn't have to worry about how long they each were. like it a lot. so, one bucket can deal with the NetBIOS header. one with the SMB header. one with the IPC$ layer. one with the SMBtrans layer. one with the DCE/RPC pipe layer. one with the DCE/RPC header layer. one with the DCE/RPC data. that's the sort of depth we're going into, here! and for simplicity, i've left out all the authentication and encryption stages! so... ... we still need an apr_bucket_NAL which can "bounce" in-and-out of buckets, _even though it may actually be implemented as buckets itself, underneath!_ and handle the possibility that on one particular OS - e.g. NT - is in fact a call to a kernel-level function, e.g. CreateNamedPipe(). or even, later on, let's say that someone decides to provide a linux kernel-level SMB layer or even a NetBIOS kernel API. as you can see, seven levels of buckets like that - all of which a programmer will need to be "aware" of - is exactly what makes me very, very wary of introducing "newbie" programmers - no matter _how_ skilled or advanced or experienced they are - into this kind of environment. if we can split things out so that an individual programmer only has to deal with *at most* two layers - the one they're coming from and the one they're going to - i'll be well-happy. and to do _that_, in TNG, i decided to split at the SMBtrans / DCE/RPC pipe layer with a unix-domain-socket. and on NT, that is going to be CreateNamedPipe() that will do that for us, bypassing the SMBtrans-and-below layers altogether. and still get good code reuse / abstraction. what you think? luke ----- Luke Kenneth Casson Leighton <[EMAIL PROTECTED]> ----- "i want a world of dreams, run by near-sighted visionaries" "good. that's them sorted out. now, on _this_ world..."