GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  IO::LAMBDA::DBI (3)

.ds Aq ’

NAME

IO::Lambda::DBI - asynchronous DBI

CONTENTS

DESCRIPTION

The module implements asynchronous DBI proxy object, that remotes DBI calls using any given file handle, such as stream sockets, pipes, etc. All calls to DBI methods are implemented as method calls to the object, which return lambdas, that shall be subsequently called and awaited for completion.

SYNOPSIS



    use IO::Lambda qw(:all);
    use IO::Lambda::DBI;
    use IO::Lambda::Thread qw(new_thread);

    # use threads as a transport
    my ($thread, $socket) = new_thread( sub {
        IO::Lambda::Message::DBI-> new( shift )-> run;
    }, 1);
       
    my $dbi = IO::Lambda::DBI-> new($socket);

    # execute a query
    print lambda {
        context $dbi-> connect(DBI:mysql:database=mysql, , );
    tail {
        return "connect error:$_[0]" unless shift;
        context $dbi-> selectrow_array(SELECT 5 + ?, {}, 2);
    tail {
        my ($ok,$result) = @_;
        return "dbi error:$result" unless $ok;
        context $dbi-> disconnect;
    tail {
        return "select=$result";
    }}}}-> wait, "\n";

    # finalize
    $thread-> join;



IO::Lambda::DBI

All remoted methods return lambdas of type



   dbi_result :: () -> ( 1, @result | 0, $error )



where depending on the first returned item in the array, the other items are either DBI method results, or an error.

The class handles AUTOLOAD methods as proxy methods, so calls such as $dbh-> selectrow_array are perfectly legal.
new $class, $r, $w, %options See new in IO::Lambda::Message.
connect($dsn, $user, $auth, %attr) :: dbi_result Proxies DBI::connect. In case of failure, depending on RaiseError flag, returns either (0,$error) or (1,$error).
disconnect :: dbi_result Proxies DBI::disconnect.
call($method, @parameters) :: dbi_result Proxies DBI::$method(@parameters).
set_attr(%attr) Sets attributes on a DBI handle.
get_attr(@keys) Retrieves values for attribute keys from a DBI handle.
prepare($statement) Returns a new prepared statement object or an error string. All method calls on this object return lambda that also wait until remote methods are executed.
begin_group(), end_group() These two methods allow grouping of DBI calls. begin_group() affects a IO::Lambda::DBI object so that all calls to remoted methods are not stored in the queue (and, consequently, not executed one at a time), but are accumulated instead. end_group() ends such buffering, sends the message incapsulating all stored calls, and returns a lambda that executes when all stored calls are finished and replied to. The lambda returns results to all accumulated calls.

Note: each stored call registers whether it is called in array or scalar context. The results are returned accordingly in a list, so the caller is responsible for parsing the results if some or all calls were made in the array context.

Example:



    context
        $dbi-> begin_group,
        $dbi-> selectrow_arrayref("select * from a"),
        $dbi-> selectrow_arrayref("select * from b"),
        $dbi-> end_group;
    tail {
        return warn "error:$_[0]" unless shift;
        my ( $a, $b) = @_;
    }



IO::Lambda::Message::DBI

Descendant of IO::Lambda::Message::Simple. Implements blocking, server side that does the actual calls to the DBI.

SEE ALSO

DBI, eg/dbi.pl.

AUTHOR

Dmitry Karasik, <dmitry@karasik.eu.org>.
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 IO::LAMBDA::DBI (3) 2012-03-14

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.