Return connection status in condvar in $i3->connect

This commit is contained in:
Michael Stapelberg 2010-03-13 17:38:32 +01:00
parent 7d92e2c3e2
commit 279528a863
1 changed files with 10 additions and 2 deletions

View File

@ -60,6 +60,7 @@ our @EXPORT = qw(i3);
my $magic = "i3-ipc"; my $magic = "i3-ipc";
# TODO: export constants for message types
# TODO: auto-generate this from the header file? (i3/ipc.h) # TODO: auto-generate this from the header file? (i3/ipc.h)
my $event_mask = (1 << 31); my $event_mask = (1 << 31);
my %events = ( my %events = (
@ -93,7 +94,12 @@ sub new {
=head2 $i3->connect =head2 $i3->connect
Establishes the connection to i3. Returns an C<AnyEvent::CondVar> which will Establishes the connection to i3. Returns an C<AnyEvent::CondVar> which will
be triggered as soon as the connection has been established. be triggered with a boolean (true if the connection was established) as soon as
the connection has been established.
if ($i3->connect->recv) {
say "Connected to i3";
}
=cut =cut
sub connect { sub connect {
@ -104,12 +110,14 @@ sub connect {
tcp_connect "unix/", $self->{path}, sub { tcp_connect "unix/", $self->{path}, sub {
my ($fh) = @_; my ($fh) = @_;
return $cv->send(0) unless $fh;
$self->{ipchdl} = AnyEvent::Handle->new( $self->{ipchdl} = AnyEvent::Handle->new(
fh => $fh, fh => $fh,
on_read => sub { my ($hdl) = @_; $self->_data_available($hdl) } on_read => sub { my ($hdl) = @_; $self->_data_available($hdl) }
); );
$cv->send $cv->send(1)
}; };
$cv $cv