Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 1.34 KB | None | 0 0
  1. proc ClusterQueryHandler { event } {
  2.   set results {}
  3.   lassign $event action query
  4.   switch -- $action {
  5.     response {
  6.       return [$query result]
  7.     }
  8.     error {
  9.       return [$query error]
  10.     }
  11.     timeout - done {
  12.       set props   [$query props]
  13.       set results [$query results]
  14.       if { [dict exists $props callback] } {
  15.         set callback [dict get $props callback]
  16.         dict unset props callback
  17.       }
  18.     }
  19.   }
  20.  
  21.   if { [info exists callback] } {
  22.     # ~! "Callback!" "Calling Back!"
  23.     try {
  24.       uplevel #0 [list {*}$callback $action $query $props $results]
  25.     } on error {result options} {
  26.       ::onError $result $options "While Making a Query Callback!" $action $query $props
  27.     }
  28.   } elseif { $action in [list done timeout] } {
  29.      # No callback?  Lets just log the results!
  30.     ~! "Query Results" "A Services Query Response is Available" \
  31.       -type    complete \
  32.       -context "
  33.        Query Result: $action
  34.        $results
  35.      "
  36.   }
  37. }
  38.  
  39.  
  40. # Generate a Query, collect the results, dispatch to callback
  41. proc ClusterQuery { resolver query {props {}} args } {
  42.   ::utils::flog "| CLUSTER QUERY | $resolver | $query | $props |"
  43.   $::CLUSTER query \
  44.     -collect \
  45.     -resolver $resolver \
  46.     -query    $query \
  47.     -command  ClusterQueryHandler \
  48.     -props    $props \
  49.     {*}$args
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement