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

Reply via email to