#!/bin/bash

NAME=SF1R-Engine
PNAME=CobraProcess

LOG_NAME="ll"
LOG_FOLDER="log"
SUCCESS_WORD="CobraProcess has started"


function verifyconfig() {
export LD_LIBRARY_PATH="../lib:../lib-thirdparty"
if [ ! -e '../config/sf1config.xml' ]; then
  echo -e "\nCannot find the configuration file for SF1r -- #'sf1config.xml'#. \nPlease verify if it exists in '../config'.\n" 
  exit 1
fi
}

case "$1" in
  start)
    verifyconfig
    if [ `ps -ef|grep "$PNAME -F ../config"|grep -v grep|wc -l` -eq 1 ]
      then
        echo -e "$NAME has already started!\n"
        exit 1
      else
        mkdir -p $LOG_FOLDER && touch $LOG_FOLDER/$LOG_NAME.log
        if [ `ls -l $LOG_FOLDER/$LOG_NAME.log | awk -F' '  '{print $5}'` -ge 999000000 ]; then
          mv $LOG_FOLDER/$LOG_NAME.log "$LOG_FOLDER/$LOG_NAME.log.`date +%m%d%H%M`"
          echo >$LOG_FOLDER/$LOG_NAME.log
        fi
        LOG_NUM=`ls $LOG_FOLDER | wc -l`
        if [ $LOG_NUM -gt 80 ]; then
          cd $LOG_FOLDER; ls -rt | head -`expr $LOG_NUM - 80` | xargs rm -f; cd ..
        fi
        echo -n "Starting $NAME"
        ./$PNAME -F ../config --pid-file ../run/_.pid >> $LOG_FOLDER/$LOG_NAME.log 2>&1 &
        S=1
        while [ $S -le 900 ]
        do
          echo -n "."; sleep 1;
          let S=S+1
          if [ `ps -ef|grep "$PNAME -F ../config"|grep -v grep|wc -l` -eq 0 ]; then
            echo -e "Fail.\nCheck $LOG_FOLDER/$LOG_NAME.log for more detail.\n"
            exit 1
          fi
          if [ `ps -ef|grep "$PNAME -F ../config"|grep -v grep|wc -l` -eq 1 ] && [ `grep $(date +%m%d) $LOG_FOLDER/$LOG_NAME.log|grep $(date +%H:%M)|grep -c "$SUCCESS_WORD"` -ge 1 ]; then
            echo -e "Success. \nTo monitor the log file, type: 'tail -f $LOG_FOLDER/$LOG_NAME.log'\n"
            break
          fi
        done
    fi
    ;;
  stop)
    echo -n "Stopping $NAME"
    ps -ef|grep "$PNAME -F ../config"|grep -v grep|awk '{print $2}'|xargs kill -2 2>/dev/null
    S=1
    while [ $S -le 90 ]
    do
      echo -n "."; sleep 1;
      let S=S+1
      if [ `ps -ef|grep "$PNAME -F ../config"|grep -v grep|wc -l` -ne 1 ]; then
        echo -e "Done.\n"
        break
      fi
    done
    if [ `ps -ef|grep "$PNAME -F ../config"|grep -v grep|wc -l` -ge 1 ]; then
      echo -e "Failed.\n"
      exit 1
    fi
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo -e "Usage: ./sf1r-engine  { start | stop | restart }\n" >&2
    exit 1
    ;;
esac
