]> git.sur5r.net Git - i3/i3/commitdiff
Return connection status in condvar in $i3->connect
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 13 Mar 2010 16:38:32 +0000 (17:38 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 13 Mar 2010 16:38:32 +0000 (17:38 +0100)
lib/AnyEvent/I3.pm

index c11acf0121e645f7c2debddffb1e9acc62db31ff..bf25bda477996652958d8a5f553bd481f6c8ffcc 100644 (file)
@@ -60,6 +60,7 @@ our @EXPORT = qw(i3);
 
 my $magic = "i3-ipc";
 
+# TODO: export constants for message types
 # TODO: auto-generate this from the header file? (i3/ipc.h)
 my $event_mask = (1 << 31);
 my %events = (
@@ -93,7 +94,12 @@ sub new {
 =head2 $i3->connect
 
 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
 sub connect {
@@ -104,12 +110,14 @@ sub connect {
     tcp_connect "unix/", $self->{path}, sub {
         my ($fh) = @_;
 
+        return $cv->send(0) unless $fh;
+
         $self->{ipchdl} = AnyEvent::Handle->new(
             fh => $fh,
             on_read => sub { my ($hdl) = @_; $self->_data_available($hdl) }
         );
 
-        $cv->send
+        $cv->send(1)
     };
 
     $cv