#! /bin/sh
#
# sqlrelay   This starts and stops SQL relay.
#
# chkconfig: 345 85 15
# description: Persistent database connection system.

prefix=@prefix@
sysconfdir=@sysconfdir@
localstatedir=@localstatedir@
tmpdir=${localstatedir}/sqlrelay/tmp
cachedir=${localstatedir}/sqlrelay/cache
debugdir=${localstatedir}/sqlrelay/debug

[ -f ${sysconfdir}/sqlrelay.conf ] || exit 1

RETVAL=0

# Add appropriate bin/lib paths
if [ ${prefix} != "/usr" ]; then
	export PATH=$PATH:${prefix}/bin
	export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${prefix}/lib
fi

cleanup(){
    for i in `ls ${tmpdir}/pids/* 2>/dev/null`
    do
        if ( test -r "$i" )
        then
            PID=`cat $i`
            if ( test -z "`ps -p $PID | egrep -E 'sqlr-cachemana|sqlr-connectio|sqlr-listener'`" )
            then
                echo "$PID is not sqlr! removing pidfile ..."
                rm $i
            fi
        fi
    done
}

start(){
    echo -n $"Starting SQL Relay: "
    if [ -r /etc/sqlrelay ]; then
        launched=0
        for connid in `grep -v ^# /etc/sqlrelay`; do
            echo
            echo -n $"Launching instance with id '${connid}':"
            sqlr-start -id ${connid} 0<&- 1>&- 2>&-
            RETVAL=$?
            [ $RETVAL -eq 0 ] && echo "success" || echo "failure"
            launched=1
        done
        [ "$launched" -eq 1 ] || echo "passed"
        echo
    else
        echo "failure"
    fi
    [ $RETVAL -eq 0 ] && touch /var/lock/sqlrelay
    cleanup
    return $RETVAL
}

stop(){
    echo -n $"Stopping SQL Relay: "
    if [ -r /etc/sqlrelay ]; then
        launched=0
        for connid in `grep -v ^# /etc/sqlrelay`; do
            echo
            echo -n $"Stopping instance with id '${connid}':"
            sqlr-stop ${connid} 0<&- 1>&- 2>&-
            RETVAL=$?
            [ $RETVAL -eq 0 ] && echo "success" || echo "failure"
            launched=1
        done
        [ "$launched" -eq 1 ] || echo "passed"
        echo
    else
        echo "failure"
    fi
    [ $RETVAL -eq 0 ] && rm -f /var/lock/sqlrelay
    cleanup
    return $RETVAL
}

restart(){
    stop
    start
}

condrestart(){
    [ -e /var/lock/sqlrelay ] && restart
    return 0
}


# See how we were called.
case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    restart)
	restart
	;;
    reload)
	restart
	;;
    condrestart)
	condrestart
	;;
    *)
	echo "Usage: sqlrelay {start|stop|restart|condrestart}"
	RETVAL=1
esac

exit $RETVAL
