activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mats Forslöf <>
Subject RE: Recent OpenWire changes
Date Thu, 02 Mar 2006 12:39:23 GMT
Most informative, thanks Hiram. Is it correct that the C# client only supports tight marshalling
at the moment?


-----Original Message-----
From: Hiram Chirino [] 
Sent: den 1 mars 2006 19:26
Subject: Recent OpenWire changes

Hi Everybody,

Just a quick heads up,  openwire by default tries to encode commands  
as tight as possible on the wire to decrease bandwidth requirements.   
To do this, it currently uses a 2 pass algorithm where the first pass collects all boolean
writes into a bit array and pre calculates the size of the command on the wire.  The second
pass writes the command to the stream.

While this produces small on the wire size, it's  a bit CPU intensive, so I made a change
so that a loose encoding is also possible which marshals the messages in a single pass and
avoids doing all the fancy things that the tight encoding was using.  Using loose encoding
should make sense if your broker is CPU bound and network bandwidth is not an issue.  So if
you look at the open wire classes you will now see a bunch of tightMarshal/Unmarshal and looseMarshal/Unmarshal

Another option that has been added is the ability to omit the command size prefix on the serialized
commands.  The command size prefix is actually only useful for non blocking implementations
where we only want to unmarshal the command once it has been fully received.  In normal blocking
IO, knowing the size of the command in not necessary.  By omitting the command size, we should
be able to do more efficient marshaling of the command since we don't have to calculate the
command size beforehand.

These default options are still at what they were before (tight encoding and command size
prefixing), but they can be negotiated between the client and server with the WireFormatInfo


View raw message