Merge branch 'release-2.140.135' into main
[feisty_meow.git] / scripts / processes / process_manager.sh
index 8acab83e241b49c61c6b5f0b84d1d5e72dac8007..48737e471867db33d80ed39a482a704f0ac03b59 100644 (file)
@@ -1,13 +1,23 @@
 #!/bin/bash
 
-# process manager helper methods for bash.
+##############
 #
-# relies on the built-in process management to run a bunch of processes
-# in the background, but will limit total number running to a maximum.
-# demonstration method at the end of the file shows how to use the
-# process managing methods.
+#  Name   : process manager helper methods
+#  Author : Chris Koeritz
+#  Rights : Copyright (C) 2015-$now by Author
 #
-# by chris koeritz
+# Purpose:
+#
+#   Relies on the built-in process management in bash to run a bunch of
+# processes in the background, but will limit total number running to a
+# maximum count.  There is a demonstration method at the end of the file
+# that shows how to use the process management functions.
+#
+##############
+# This script is free software; you can modify/redistribute it under the terms
+# of the GNU General Public License. [ http://www.gnu.org/licenses/gpl.html ]
+# Feel free to send updates to: [ fred@gruntose.com ]
+##############
 
 #hmmm: revisions desired someday:
 #  + allow number of max processes to be passed in.
@@ -42,10 +52,10 @@ function nechung()
 {
   start_background_action \
       'echo "your nechung oracle pronouncement of the moment..."' \
-      '$BINDIR/nechung'
+      '$FEISTY_MEOW_BINARIES/nechung'
 }
 
-function login_on_xcg()
+function sum_dir()
 {
   start_background_action \
       'echo "summing directory output coming up..."' \
@@ -70,17 +80,23 @@ function wait_on_backgrounders()
   echo "done waiting, background process count is down to $bg_count."
 }
 
+#hmmm: the demo app here raises some concerns--how do we know the bg count is right?
+#      what if something died and we didn't check it?
+#      will the thing that looks at bg count adjust it if there are actually no waiting processes?
+
 # happily launches off different actions as background processes.
 launcher_demonstrator()
 {
-  while true; do
+  # run a limited number of loops, since we don't want to do this forever.
+  local loops=50
+  while ((loops-- > 0)); do
     # pick a thing to do.
     which=$(($RANDOM % 3))
 #hmmm: not asynch yet!  make it so!
     case $which in
       0) take_inventory;;
       1) nechung;;
-      2) login_on_xcg;;
+      2) sum_dir;;
     esac
 
     # we have reached the limit on processes and need to wait for a few, defined by