#!/bin/bash

. /lib/svc/share/smf_include.sh

# Get the value of a property defined in the service xml.
getproparg() {
	val=`svcprop -p $1 coherence`
	[ -n "$val" ] && echo $val
}

PROGNAME=coherence
CONFIGFILE=`getproparg coherence/config`
DATADIR=`getproparg coherence/data`
LOCKFILE=${DATADIR}/`/usr/bin/uname -n`.lock

if [ -z ${DATADIR} ]; then
	echo "coherence/data property not set"
	exit $SMF_EXIT_ERR_CONFIG
fi

if [ ! -d ${DATADIR} ]; then
	echo "coherence/data directory ${DATADIR} is not a valid directory"
	exit $SMF_EXIT_ERR_CONFIG
fi

RETVAL=0

start() {
	# Check if it is already running
	if [ ! -f ${LOCKFILE} ]; then
	    echo "Starting: " /usr/bin/$PROGNAME -c $CONFIGFILE
	    $PROGNAME -o use_dbus:yes -o controlpoint:yes -c $CONFIGFILE &
	    RETVAL=$?
	    [ ${RETVAL} -eq 0 ] && touch ${LOCKFILE}
	    echo
	fi
	return $RETVAL
}

stop() {
	echo "Stopping: " $PROGNAME
	pkill -f -U upnp /usr/bin/$PROGNAME
        pgrep -f /usr/bin/$PROGNAME 
	RETVAL=$?
	rm -f ${LOCKFILE}
	RETVAL=$?
  return $RETVAL
}


restart() {
	$0 stop
	$0 start
}	

reload() {
	trap "" SIGHUP
	killall -HUP $PROGNAME
	rm -f ${LOCKFILE}
}	

case "$1" in
start)
	start
	;;
stop)
	stop
	;;
reload)
	reload
	;;
restart)
	restart
	;;
condrestart)
	if [ -f ${LOCKFILE} ]; then
	    restart
	fi
	;;
status)
	status $PROGNAME 
	;;
*)
	INITNAME=`basename $0`
	gprintf "Usage: %s {start|stop|restart|condrestart|status}\n" "$INITNAME"
	exit 1
esac

exit $RETVAL
