directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject [Apache Directory Project Wiki] Updated: TLVPageInfo
Date Fri, 18 Feb 2005 07:27:07 GMT
   Date: 2005-02-17T23:27:07
   Editor: EmmanuelLecharny
   Wiki: Apache Directory Project Wiki
   Page: TLVPageInfo

   no comment

Change Log:

@@ -25,6 +25,10 @@
 ''Looking at the automaton below it occurred to me that we can create two different Tag decoders.
 A stateless one for protocols that only requires a single byte Tag.  You get whole bytes
delivered in buffers so no need to keep state right?  The stateless Tag really simplifies
the automaton ;).  For multibyte protocols we do collect bytes in a TagOctetCollector which
is just a wrapper around a Java int.  Do you think this needs to be revamped?  In the case
of a protocol where the number of Tag octets can be greater than 1 we can use a less efficient
stateful Tag decoder which needs the full logic of the automaton.  I know this is just some
extra if-then-else logic but that adds up for every byte.  So we can swap out the Tag decoder
used based on the protocol.  Most hopefully will take the simple tag decoder and not pay too
much of a penalty.''
+''(Having two decoders will lead, I think, to more complexity than necessary. The idea, basically,
is that we don't need to have a TagDecoder, a Length Decoder and a Value Decoder. All those
decoder could perfectly be wrapped in a TLV decoder - I'm working on that, actually -, which
will be really more efficient, even if the statefull decoder is much more complicated (ok,
it's not that complex ;-). In a way, to discriminate between a single byte and a multibyte
just need an 'if' test, wich is really fast. I perfectly agree that we could switch from a
single/multi byte decoder depending on the protocol we are decoding, so why don't we keep
it beside for further optimisations, if needed?)''
+''(Note : the Tag decoder implanting this state automaton is somehow much fatser than the
one which is used : 5 times. But this number has to be check again to be sure that it does
not break the base code)''
 ''BTW note that if we have a protocol with more that 30 tags we only need one multibyte tag
decoder per stream.  This is a per connection setup cost paid once and not for every Tag that
comes through.''
 Decoding a Tag has to follow the finite state automaton showed on this picture :

View raw message