Subject Re: [Firebird-Architect] Re: Firebird Remote Protocol
Author Daniel Rail
Hello,

Wednesday, December 7, 2005, 4:25:22 AM, you wrote:

> Both these issues are effectively eliminated with a simple RLE compression,
> but we don't support it yet. Perhaps such a workaround would be much easier
> to do than redesign/reimplement the API. Just add an optional packet-level
> compression which is enabled if and only if both sides support the new
> protocol version.

If I understand correctly, the first connection to the server would be
just to see if the compression is supported or not. Then the actual
database connection request can take place. And, if it's an older
connection library, then the database connection request is processed
immediately, as it is now.

> The question is how to turn this feature off for those who
> already use compression provided by Zebedee or alike tools.

One way that I would suggest is to use plugins that people can develop
themselves, both for the client and the server. One default plugin
would exist that would use RLE. This way it would be possible for
someone to develop a plugin that would compress(any other compression
format) and/or encrypt the communication. And, those plugins(more than
one for the server, and just one for the client) would be declared in
the configuration file, with a unique identifier specified in the
configuration file. But in the absence of a valid configuration, the
default RLE plugin(if found) would be used by the client(and still
verified that the server does support it).

By having the plugin declaration in a config file does eliminate the
need to change the API, since the plugin to use wouldn't have to be
passed via the API.

And another advantage of having plugins would be that the developer
would have the flexibility on how the compression and encryption is
implemented within them. In example: The encryption key could be
placed directly within the plugin(even itself being encrypted),
instead of a config file.

--
Best regards,
Daniel Rail
Senior Software Developer
ACCRA Group Inc. (www.accra.ca)
ACCRA Med Software Inc. (www.filopto.com)