add await_get and switch code to use it
Matt S Trout [Sun, 9 Sep 2012 16:08:01 +0000 (16:08 +0000)]
t/connection.t
ten/ten.tcl

index 41e0e2c..e0425c9 100644 (file)
@@ -23,15 +23,9 @@ set ready_args ""
 
 $f1 on_ready [list apply {{name future} {set $name [$future get]}} "[namespace current]::ready_args" ]
 
-$f1 retain
-
-$f1 await_ready
-
 set my_host [exec hostname]
 
-is [$f1 get] $my_host "hostname retuend ok via get"
-
-$f1 free
+is [$f1 await_get] $my_host "hostname returned ok via get"
 
 is $ready_args $my_host "hostname returned ok via on_ready"
 
index 3798233..a093a97 100644 (file)
@@ -197,6 +197,19 @@ snit::type ten::future {
     vwait "${selfns}::is_ready"
   }
 
+  method await_get {} {
+    $self retain
+    $self await_ready
+    if [$self is_failure] {
+      set err [$self failure]
+      $self free
+      error $err
+    }
+    set res [$self get]
+    $self free
+    return $res
+  }
+
   method retain {} {
     incr retain_count
   }