The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

OpenInteract2::DatasourceManager - Base class for datasource connection managers

SYNOPSIS

 my $dbh  = CTX->datasource( 'main' );
 my $ldap = CTX->datasource( 'ldap' );

 # Use some of the other functionality

 my $manger = CTX->datasource_manager;
 my $dbi_manager = $manager->get_manager_class( 'DBI' );

 my $new_dbi_manager = $manager->set_manager_class( 'DBI',
                                                    'My::DBI::Manager' );

DESCRIPTION

This class provides a wrapper around connection methods for DBI, LDAP or any other type of connections needed. It caches the connections for reuse throughout the lifetime of the application, although it contains no behavior (yet) for keeping the connections alive.

An implementation of the connection manager should implement as class methods:

connect( $datasource_name, \%datasource_info )

disconnect( $datasource_handle|$datasource_name )

METHODS

datasource( $datasource_name )

Returns datasource mapping to $datasource_name. Your application is responsible for keeping different datasource names straight.

Returns: $datasource on success; throws some sort of exception on error.

disconnect( $dataource_name )

Disconnects datasource $datasource_name.

shutdown()

Disconnects all datasources.

get_datasource_info( $datasource_name )

Returns hashref of configuration information for $datasource_name. If $datasource_name is not found an exception is thrown.

BUGS

None known.

TO DO

Use Class::Factory?

See if we can/need to modify to use Class::Factory.

Implement keepalive functionality

Similar to Apache::DBI, use the ping() method and do a reconnect if the connection has gone stale.

SEE ALSO

OpenInteract2::Datasource::DBI

OpenInteract2::Datasource::LDAP

COPYRIGHT

Copyright (c) 2002-2003 Chris Winters. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHORS

Chris Winters <chris@cwinters.com>