| check_requires() { # Check required files, monitors and reactors |
| for i in "$@" ; do |
| p=${i%:program} |
| m=${i%:monitor} |
| r=${i%:reactor} |
| if [ $p != $i ]; then |
| if ! which $p ; then |
| echo "Required program $p is not found." |
| exit_unresolved |
| fi |
| elif [ $m != $i ]; then |
| if ! grep -wq $m available_monitors ; then |
| echo "Required monitor $m is not configured." |
| exit_unsupported |
| fi |
| elif [ $r != $i ]; then |
| if ! grep -wq $r available_reactors ; then |
| echo "Required reactor $r is not configured." |
| exit_unsupported |
| fi |
| elif [ ! -e $i ]; then |
| echo "Required feature interface $i doesn't exist." |
| exit_unsupported |
| fi |
| done |
| } |
| |
| initialize_system() { # Reset RV to initial-state |
| echo > enabled_monitors |
| for m in monitors/*; do |
| echo nop > $m/reactors || true |
| done |
| echo 1 > monitoring_on |
| echo 1 > reacting_on || true |
| } |
| |
| finish_system() { |
| initialize_system |
| } |