#!/bin/sh
#
# semsgdaemon         Start/Stop SEMsgdaemon
#
# chkconfig: 2345 91 19
#
# description: SEMsg server daemon
#
### BEGIN INIT INFO
# Provides:          semsgdaemon
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SEMsg server daemon
# Description:       SEMsg server daemon
### END INIT INFO
#
# $Id: SEMsgdaemon.script 0001 2011-01-12 11:45:06Z furano $
#
# @(#)$RCSfile: SEMsgdaemon.script,v $ $Revision: 0001 $ $Date: 2011-01-12 13:45:06 +0200 (Wed, 14 Jul 2010) $ CERN/IT/GT/DMS Fabrizio Furano
#

#
## PLEASE USE sysconfig FILE TO CHANGE THESE ENVIRONMENT VARIABLES
#

export LD_LIBRARY_PATH
SEMSGUSER=dpmmgr
SEMSGGROUP=dpmmgr
NB_THREADS=20

sysname=`uname -s`

# source function library
if [ -r /etc/rc.d/init.d/functions ]; then
    . /etc/rc.d/init.d/functions
    DAEMON=daemon
    FAILURE=failure
    ECHO_FAILURE=failure
    SUCCESS=success
    ECHO_SUCCESS=echo_success
    ECHO_END=echo
    if [ $sysname = "Linux" ]; then
        ECHOOPT=-n
    fi
else
    DAEMON=eval
    FAILURE=
    ECHO_FAILURE=
    SUCCESS=
    ECHO_SUCCESS=
    ECHOOPT=
    ECHO_END=
fi

RETVAL=0

# Try to guess the location of the sysconfig file
if [ -r /opt/lcg/etc/SEMsgdaemon.conf ]; then
    echo "Sourcing /opt/lcg/etc/SEMsgdaemon.conf"
    SYSCONFIGSEMSGDAEMON=/opt/lcg/etc/SEMsgdaemon.conf
elif [ -r /etc/sysconfig/SEMsgdaemon ]; then
    echo "Sourcing /etc/sysconfig/SEMsgdaemon"
    SYSCONFIGSEMSGDAEMON=/etc/sysconfig/SEMsgdaemon
fi

#
## Source the configuration
#
. $SYSCONFIGSEMSGDAEMON

LD_LIBRARY_PATH=$SEMSGPFXDIR/$SEMSGLIBDIR:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

case "$1" in
  start)

    echo $ECHOOPT "Starting $prog: "
    pgrep -u $SEMSGUSER SEMsgdaemon > /dev/null

    if [ $? -eq 0 ]; then
        echo $ECHOOPT "SEMsgdaemon already started: "
        [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "SEMsgdaemon already started: "
    else
        if [ "${RUN_SEMSGDAEMON}" != "yes" ]; then
            echo $ECHOOPT "$SYSCONFIGSEMSGDAEMON says NO: "
            [ -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "$SYSCONFIGSEMSGDAEMON says NO: "
            $ECHO_END
            exit $RETVAL
        fi
        if [ -n "${ULIMIT_N}" ]; then
            ulimit -n ${ULIMIT_N}
        fi

        if [ $RETVAL -eq 0 ]; then
            cd /
            export DFLTQNAME=`hostname -f | sed 's/\./_/g'`

            if [ "${ALLOW_COREDUMP}" != "yes" ]; then
                $DAEMON "su -m $SEMSGUSER -c \"LD_LIBRARY_PATH=$LD_LIBRARY_PATH DFLTQNAME=$DFLTQNAME HOME=/home/$SEMSGUSER/ $SEMSGPFXDIR/sbin/SEMsgdaemon - -b -c $SEMSGCONFIGFILE\""
            else
                $DAEMON "su -m $SEMSGUSER -c \"mkdir -p /home/$SEMSGUSER/SEMsg; cd /home/$SEMSGUSER/SEMsg; DFLTQNAME=$DFLTQNAME HOME=/home/$SEMSGUSER/ ; hostname -f >> logstart; date >> logstart; ulimit -c unlimited; pwd >> logstart; ulimit -c >> logstart; echo DAEMON $SEMSGPFXDIR/sbin/SEMsgdaemon - -b -c $SEMSGCONFIGFILE >> logstart; LD_LIBRARY_PATH=$LD_LIBRARY_PATH $SEMSGPFXDIR/sbin/SEMsgdaemon - -b -c $SEMSGCONFIGFILE\""
            fi
            if [ $? -ne 0 ]; then
                echo $ECHOOPT "SEMsgdaemon not started: "
                [ -n "$FAILURE" ] && $FAILURE "SEMsgdaemon not started: "
                RETVAL=1
            fi
        fi
    fi
    $ECHO_END
    ;;
  stop)
    echo $SEMSGUSER
    pgrep -u $SEMSGUSER SEMsgdaemon > /dev/null
    if [ $? -eq 0 ]; then
        [ "x$SILENTSTOP" == "x" ] && echo $ECHOOPT "Stopping $prog: "
	pkill -u $SEMSGUSER SEMsgdaemon > /dev/null
    else
        [ "x$SILENTSTOP" == "x" ] && echo $ECHOOPT "SEMsgdaemon already stopped: "
        [ "x$SILENTSTOP" == "x" -a -n "$ECHO_SUCCESS" ] && $ECHO_SUCCESS "SEMsgdaemon already stopped: "
    fi
    if [ "x$SILENTSTOP" == "x" -a $sysname = "Linux" ]; then
        if [ $RETVAL -eq 0 ]; then
            $ECHO_SUCCESS
        else
            $ECHO_FAILURE
        fi
    fi

    lpid="X"
    while [ "x$lpid" != "x" ]; do
        sleep 1
        #Does not seem to work on SunOS ;-)
        lpid=`pgrep -u $SEMSGUSER SEMsgdaemon`
    done

    [ "x$SILENTSTOP" == "x" -a -n "$ECHO_END" ] && $ECHO_END
    ;;
  restart | force-reload)
    $0 stop
    if [ $? -eq 0 -o "x$SILENTSTOP" == "x" ]; then
        sleep 1 
        $0 start
        RETVAL=$?
    else
        #
        ## It is legal to return zero it if was
        ## a conditional restart
        #
        if [ "x$SILENTSTOP" == "x" ]; then
            RETVAL=1
        else
            RETVAL=0
        fi
    fi
    ;;
  condrestart | try-restart)
    SILENTSTOP=1
    export SILENTSTOP
    $0 restart
    RETVAL=$?
    ;;
  reload)
    ;;
  status)
    pid=`ps -eo pid,ppid,comm | grep " 1 SEMsgdaemon$" | awk '{print $1}'`
    if [ -n "$pid" ]; then
        echo $ECHOOPT "SEMsgdaemon (pid $pid) is running..."
        $ECHO_SUCCESS
        $ECHO_END
        RETVAL=0
    else
        echo $ECHOOPT "SEMsgdaemon is not running"
        RETVAL=3

        $ECHO_FAILURE
        $ECHO_END
    fi
    ;;
  *)
    echo "Usage: $0 {start|stop|status|restart|condrestart}"
    RETVAL=1
    ;;
esac

exit $RETVAL
