#!/bin/bash set -euo pipefail . $(dirname "$0")/../lib/syndicate.sh demo_ds_resolved() { local oid="$(ds_project "$ds_event" '^ A . 0 ^ accepted . 0 .embedded . 1')" if [ -n "$oid" ] then ds_ref="#:[1 $oid]" echo "Dataspace: $ds_ref" username="user$$" declare -A demo_user_presence demo_presence() { case $(ds_project "$ds_event" .^) in A) local h="$(ds_project "$ds_event" '. 1')" local who="$(ds_project "$ds_event" '. 0 . 0')" demo_user_presence[$h]="$who" echo "JOIN: $who" ;; R) local h="$(ds_project "$ds_event" '. 0')" local who="${demo_user_presence[$h]}" echo "PART: $who" unset 'demo_user_presence[$h]' ;; esac } ds_object presence demo_presence ds_assert "$ds_ref" ">]> $presence>" ds_assert "$ds_ref" "" demo_utterance() { local who="$(ds_project "$ds_event" '^ M . 0 . 0')" local what="$(ds_project "$ds_event" '^ M . 0 . 1')" echo "$who: $what" } ds_object utterance demo_utterance ds_assert "$ds_ref" "> >]> $utterance>" ds_flush ds_mainloop " ds_flush done ' \ 'ds_assert "#:[1 0]" " $bootk>"'