#!/bin/bash
#
# Startup script for SMPPSim
#
# chkconfig: - 84 16
# description: SMPPSim server

SMPPSIM_HOME=/opt/SMPPSim
JAR="$SMPPSIM_HOME/smppsim.jar"
CONF="/opt/SMPPSim/conf/smppsim.props"
LOG="/var/log/smppsim.log"
LOCK="/var/lock/subsys/smppsim"
JAVA=`which java`
CLASSPATH=
MAIN=com.seleniumsoftware.SMPPSim.SMPPSim
JAVA_ARGS="-Djava.net.preferIPv4Stack=true -Djava.util.logging.config.file=conf/logging.properties"
export SMPPSIM_HOME

# Source function library.
. /etc/rc.d/init.d/functions

[ -f /etc/sysconfig/smppsim ] && . /etc/sysconfig/smppsim

RETVAL=0

pid_of_smppsim() {
    pgrep -f "java.* -cp ${JAR}"
}

start() {
    [ -e "$LOG" ] && cnt=`wc -l "$LOG" | awk '{ print $1 }'` || cnt=1

    echo -n $"Starting SMPPSim: "

    cd "$SMPPSIM_HOME"
    nohup $JAVA ${JAVA_ARGS} -cp "$JAR:${CLASSPATH}" "${MAIN}" "$CONF" >> "$LOG" 2>&1 &

    while { pid_of_smppsim > /dev/null ; } &&
        ! { tail -n +$cnt "$LOG" | grep -q 'Starting DelayedInboundQueue service' ; } ; do
        sleep 0.5
    done

    pid_of_smppsim > /dev/null
    RETVAL=$?
    [ $RETVAL = 0 ] && success $"$STRING" || failure $"$STRING"
    echo

    [ $RETVAL = 0 ] && touch "$LOCK"
}

stop() {
    echo -n "Stopping SMPPSim: "

    pid=`pid_of_smppsim`
    [ -n "$pid" ] && kill $pid
    RETVAL=$?
    cnt=20
    while [ $RETVAL = 0 -a $cnt -gt 0 ] &&
        { pid_of_smppsim > /dev/null ; } ; do
            sleep 0.5
            ((cnt--))
    done

    [ $RETVAL = 0 ] && rm -f "$LOCK"
    [ $RETVAL = 0 ] && success $"$STRING" || failure $"$STRING"
    echo
}

status() {
    pid=`pid_of_smppsim`
    if [ -n "$pid" ]; then
        echo "smppsim (pid $pid) is running..."
        return 0
    fi
    if [ -f "$LOCK" ]; then
        echo $"${base} dead but subsys locked"
        return 2
    fi
    echo "SMPPSim is stopped"
    return 3
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
	RETVAL=$?
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit $RETVAL
