Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- proc ClusterQueryHandler { event } {
- set results {}
- lassign $event action query
- switch -- $action {
- response {
- return [$query result]
- }
- error {
- return [$query error]
- }
- timeout - done {
- set props [$query props]
- set results [$query results]
- if { [dict exists $props callback] } {
- set callback [dict get $props callback]
- dict unset props callback
- }
- }
- }
- if { [info exists callback] } {
- # ~! "Callback!" "Calling Back!"
- try {
- uplevel #0 [list {*}$callback $action $query $props $results]
- } on error {result options} {
- ::onError $result $options "While Making a Query Callback!" $action $query $props
- }
- } elseif { $action in [list done timeout] } {
- # No callback? Lets just log the results!
- ~! "Query Results" "A Services Query Response is Available" \
- -type complete \
- -context "
- Query Result: $action
- $results
- "
- }
- }
- # Generate a Query, collect the results, dispatch to callback
- proc ClusterQuery { resolver query {props {}} args } {
- ::utils::flog "| CLUSTER QUERY | $resolver | $query | $props |"
- $::CLUSTER query \
- -collect \
- -resolver $resolver \
- -query $query \
- -command ClusterQueryHandler \
- -props $props \
- {*}$args
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement