On Feb 5, 2008, at 2:53 AM, Toru Maesaka wrote:
G'day
Thanks for the mention Brian. Yeah, I totally agree that the if/else
approach not being a swarve solution since this creates extra
execution paths. Though, mind you this was my first attempt on
seeing the link in action.
As for abstracting the storage behind a common interface, I'm
thinking that I should really forget about external engines for now
and concentrate on getting the current storage behind a interface,
that is to be used in a common fashion later on. Making this
loadable is probably not so difficult once we have this working. It
is definitely on my todo list :-)
Trond:
Thanks for the feedback! I'm thinking using a char string for
setting the storage parameters might be neat, such that:
int (*sb_settings)(void*, const char*);
where const char* can be something along the line of:
"database_name:option1=foo:option2=foo:option3=foo" (somewhat like
the DBI).
Not sure if this is a good solution but it looks promising in my head.
Any comments?
I see in my example that I forgot to pass this parameter to
create_instance in my example ;-)
My intension was to send it to initialize_storage as:
MMCSTORAGE* initialize_storage(const char *library, const char
*config)
But I forgot to insert it into the call to create_instance ;-):
MMCSTORAGE* create_instance(settings*, int version, int *error);
settings - The backend should be able to pick up the configuration
parameters it needs
version - The "protocol" version requested from the backend
error - A place the backend can store a predefined error code
I was thinking of:
MMCSTORAGE* create_instance(settings* settings, const char* config,
int version, int &error)
config - would be specialized for this backend specified with a
command line option (like your -o option). The backend could treat it
as a file-name or a config string..
settings - The backend should be able to pick up the configuration
parameters it needs
version - The "protocol" version requested from the backend
error - A place the backend can store a predefined error code
Trond