#!/bin/bash

set -e

# /etc/init.d/transcoder: start and stop the transcoder daemon

export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"

. /lib/lsb/init-functions
. /etc/default/rcS

. /opt/cm/bin/script_lib.sh

function get_number_of_processes()
{
    # If running on a vserver, assume only one processor
    ps awx | grep -v grep | grep --quiet 'udev'
    if [ $? -gt 0 ];
    then
      processes=1
    else
      # Get number of processors
      processes=$(cat /proc/cpuinfo | grep processor | wc -l)
    fi
    echo $processes
}

processes_needed=$(get_number_of_processes)

case "$1" in
  start)
    log_msg "starting [$processes_needed] transcoders"

    for((i=1;i<=$processes_needed;i++))
    {
      start-stop-daemon --start --quiet --background \
          --pidfile /var/run/transcoder_$i.pid \
          --make-pidfile --exec /usr/bin/php \
          /opt/cm/common/CLI/daemon.php cmdsp_back_end/daemons TranscodeDaemon
      if [ $? -gt 0 ];
      then
        log_failure_msg "Failed to start transcoder [$i]"
      fi
    }
    ;;
  stop)
    log_daemon_msg "Stopping transcoders"
    PIDS=$(ps awx | grep daemon.php | grep TranscodeDaemon | awk '{print $1}')

    for PID in $PIDS;
    {
      kill -TERM $PID
    }
    sleep 1
    # Wait for everybody to exit
    for PID in $PIDS;
    {
      [ ! -f /proc/$PID/cmdline ] && continue
      while grep -quiet TranscodeDaemon /proc/$PID/cmdline;
      do
         echo -n "."
         sleep 1
      done
    }
    ;;

  status)
    PIDSno=$(ps awx | grep daemon.php | grep TranscodeDaemon | awk '{print $1}' | wc -l)
    echo "Detected [$PIDSno] daemons running"
    if [ $PIDSno -gt 0 ];
    then
      exit 0
    else
      exit 1
    fi
    ;;

  *)
	echo "Usage: /etc/init.d/transcoder {start|stop|status}"
	exit 1
esac

exit 0

