#!/bin/sh


JWS_HOME=$0
[ "x$(readlink $0)" != "x" ] && JWS_HOME=$(readlink $0)
JWS_HOME=$(cd $(dirname $JWS_HOME);pwd)

[ $(ulimit -n) -lt 20000 ] && ulimit -SHn 20000 >/dev/null 2>&1

export LANG="zh_CN.UTF-8"
export LD_LIBRARY_PATH=${JWS_HOME}/runtime/lib:$LD_LIBRARY_PATH
export PATH=${JWS_HOME}/runtime/bin:$PATH
# export MONO_MANAGED_WATCHER="disable"
# export MONO_EXTERNAL_ENCODINGS="gbk:gb18030:gb2312"
# export MONO_STRICT_MS_COMPLIANT="yes"
# export MONO_GC_PARAMS="max-heap-size=3g"
# export MONO_DISABLE_AIO=1
export MONO_ASPNET_WEBCONFIG_CACHESIZE=8192
export MONO_THREADS_PER_CPU=2000

# Jws Is Running.
get_status()
{
    pid=`cat /var/run/jexus/jws.pid 2>/dev/null`
    [ "$pid" = "" ] && return 0

    jws_pidc=`ps -e | grep $pid | wc -l`
    [ $jws_pidc -ge 1 ] && return 1
    return 0
}

get_jws_pid()
{
  pid=`cat /var/run/jexus/jws.pid 2>/dev/null`
  [ "$pid" = "" ] && pid=0
  echo $pid
}

wait_new()
{
  for i in $(seq 1 30)
  do
    echo -n '.'
    sleep 1
    p=`cat /var/run/jexus/jws.pid 2>/dev/null`
    [ "$p" = "" ] && continue
    [ $1 != $p ] && return
  done
}


case "$1" in

  start)
    if [ "x$2" != "x" ]; then
      if [ "$2" = "-D" ]; then
        ${JWS_HOME}/jwss
        exit 0
      fi
      ${JWS_HOME}/jwss -reapp "$2"
      exit 0
    fi

    echo -n "Starting "
    oldpid=$(get_jws_pid)
    ${JWS_HOME}/jwss </dev/null >/dev/null 2>&1 &
    wait_new $oldpid
    get_status
    [ $? -eq 1 ] && echo " OK" && exit 0
    echo " Failure" && exit 1
    ;;

  stop)
    if [ "x$2" != "x" ]; then
      ${JWS_HOME}/jwss -stop "$2"
      exit 0
    fi
    ${JWS_HOME}/jwss -stop
    ;;

  restart)
    if [ "x$2" != "x" ]; then
      if [ "$2" = "-D" ]; then
        ${JWS_HOME}/jwss
        exit 0
      fi
      ${JWS_HOME}/jwss -reapp "$2"
      exit 0
    fi

    ${JWS_HOME}/jwss -stop
    sleep 3
    echo -n "Starting "
    oldpid=$(get_jws_pid)
    ${JWS_HOME}/jwss </dev/null >/dev/null 2>&1 &
    wait_new $oldpid
    get_status
    [ $? -eq 1 ] && echo " OK" && exit 0
    echo " Failure" && exit 1
    ;;

  init | regsvr)
    chmod +x ${JWS_HOME}/jwss
    chmod +x ${JWS_HOME}/runtime/bin/*
    [ -f /usr/bin/jws ] && rm -f /usr/bin/jws
    ln -s ${JWS_HOME}/jws /usr/bin/jws
    python -V >/dev/null 2>&1
    [ $? -eq 0 ] && python ${JWS_HOME}/def.py > ${JWS_HOME}/os.def 2>/dev/null 
    [ $? -ne 0 ] && echo "* Error: run python create os.def"
    ;;

  status)
    get_status
    if [ $? -eq 1 ]; then
      echo "Jexus is running."
      exit 0
    fi
    echo "Jexus has stopped."
    exit 3
    ;;

  getid)
    ${JWS_HOME}/jwss --getid
    ;;

  -v | -V)
    ${JWS_HOME}/jwss -V
    ;;

  *)
    echo "Usage: jws {start|stop|restart|init|getid|status|-V}"
    exit 1

esac


exit 0
