#!/bin/sh

QUERYSURGE_HOME=/opt/QuerySurge
AGENT_HOME=/opt/QuerySurge/agent
PID_FILE=/opt/QuerySurge/agent/agent.pid
JRE_HOME=/opt/QuerySurge/java
AGENT_STATUS=""
ERROR=0
AGENT_PID=""


start_agent() {
    is_agent_running
    RUNNING=$?
    
    if [ $RUNNING -eq 1 ]; then
         echo "$0 $ARG:agent already running"
    else
	      HEAP=`sed -n 's/<heap>\(.*\)<\/heap>/\1/p' /opt/QuerySurge/agent/config/agentconfig.xml | sed 's/^[ \t]*//;s/[ \t]*$//'`
        nohup nice /opt/QuerySurge/java/bin/java -Xmx${HEAP}M -XX:+AggressiveOpts -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=/opt/QuerySurge/agent/krb5.conf -Djava.security.auth.login.config=/opt/QuerySurge/agent/gss-jaas.conf -cp /opt/QuerySurge/agent/qsagent.jar:/opt/QuerySurge/agent/jdbc/* com.rttsweb.querysurge.client.EngineLauncher > /opt/QuerySurge/agent/qsagent-out.log 2> qsagent-err.log < /dev/null &
        AGENT_PID=$!
        echo $AGENT_PID > $PID_FILE
   
        sleep 5
        is_agent_running
        RUNNING=$?
 
        if [ $RUNNING -eq 1 ];  then
            echo "$0 $ARG: agent started"
        else
            echo "$0 $ARG: agent could not be started"
            ERROR=1
        fi
    fi
}

stop_agent() {
    is_agent_running
    RUNNING=$?
    
    if [ $RUNNING -eq 0 ]; then
         echo "$0 $ARG:agent not running"
    else
        get_agent_pid
        kill $AGENT_PID
        rm $PID_FILE
        echo "$0 $ARG: agent stopped"
    fi
}

get_pid() {
    PID=""
    PIDFILE=$1
    # check for pidfile
    if [ -f $PIDFILE ] ; then
        PID=`cat $PIDFILE`
    fi
}

get_agent_pid() {
    get_pid $PID_FILE
    if [ ! $PID ]; then
        return
    fi
    if [ $PID -gt 0 ]; then
        AGENT_PID=$PID
    fi
}

is_service_running() {
    PID=$1
    if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
        RUNNING=1
    else
        RUNNING=0
    fi
    return $RUNNING
}

is_agent_running() {
    get_agent_pid
    is_service_running $AGENT_PID
    RUNNING=$?
    if [ $RUNNING -eq 0 ]; then
        AGENT_STATUS="agent not running"
    else
        AGENT_STATUS="agent already running"
    fi
    return $RUNNING
}

cd /opt/QuerySurge/agent

if [ "x$1" = "xstart" ]; then
    start_agent
elif [ "x$1" = "xstop" ]; then
    stop_agent
elif [ "x$1" = "xstatus" ]; then
    is_agent_running
    echo $AGENT_STATUS
fi

exit $ERROR
