Mats,
That's correct.
Regards,
Hiram
On Mar 2, 2006, at 7:39 AM, Mats Forslöf wrote:
Most informative, thanks Hiram. Is it correct that the C# client
only supports tight marshalling at the moment?
Regards,
Mats
-----Original Message-----
From: Hiram Chirino [mailto:[EMAIL PROTECTED]
Sent: den 1 mars 2006 19:26
To: [email protected]
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 methods.
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 packet.
Regards,
Hiram