Subject | UDR Engine |
---|---|
Author | Adriano dos Santos Fernandes |
Post date | 2008-06-24T13:02:56Z |
All,
Current C++ engine implementation (.cpp file), do this:
- Make dynamic libraries available to the database
- Listen for routines (from dynamic libraries) registration
- Isolates routines instances per attachments
All this seem useful for Delphi and others languages. If it's not easy
to use directly, through another layer.
So I propose:
- C++ engine is changed to UDR (user defined routines) engine
- C++ engine header CppEngine.h is split in UdrEngine.h (generic) and
CppEngine.h (C++ things)
- UDR engine creates [1] engines for any languages configured in the
config file
[1] It doesn't necessary need to create different ExternalEngine
instances, but can return the same. Dispose will work with reference
counting.
The config file would look like:
<language CPP>
plugin_module UDR_engine
</language>
<language DELPHI>
plugin_module UDR_engine
</language>
<plugin_module UDR_engine>
filename $(this)/udr_engine
plugin_config UDR_config
</plugin_module>
<plugin_config UDR_config>
path $(this)/udr
</plugin_config>
This makes better layering, and guarantees standard compliance with
minimal effort (languages listed in config file).
It doesn't address the problem of user creating engine plugins not
related to a specific language and having to inform a LANGUAGE in the
database. But I don't know for what tasks that would be needed, as usage
of ExternalEngine directly is very related to metadata loading.
Adriano
Current C++ engine implementation (.cpp file), do this:
- Make dynamic libraries available to the database
- Listen for routines (from dynamic libraries) registration
- Isolates routines instances per attachments
All this seem useful for Delphi and others languages. If it's not easy
to use directly, through another layer.
So I propose:
- C++ engine is changed to UDR (user defined routines) engine
- C++ engine header CppEngine.h is split in UdrEngine.h (generic) and
CppEngine.h (C++ things)
- UDR engine creates [1] engines for any languages configured in the
config file
[1] It doesn't necessary need to create different ExternalEngine
instances, but can return the same. Dispose will work with reference
counting.
The config file would look like:
<language CPP>
plugin_module UDR_engine
</language>
<language DELPHI>
plugin_module UDR_engine
</language>
<plugin_module UDR_engine>
filename $(this)/udr_engine
plugin_config UDR_config
</plugin_module>
<plugin_config UDR_config>
path $(this)/udr
</plugin_config>
This makes better layering, and guarantees standard compliance with
minimal effort (languages listed in config file).
It doesn't address the problem of user creating engine plugins not
related to a specific language and having to inform a LANGUAGE in the
database. But I don't know for what tasks that would be needed, as usage
of ExternalEngine directly is very related to metadata loading.
Adriano