#!/bin/sh
#
# rabbitmq-server	Starts the rabbitmq-server daemon
#
# chkconfig:	345 60 40
# description:	Supervise rabbitmq-server
# processname:	rabbitmq-server
#
# pidfile:		/var/run/rabbitmq-server.pid
#
# processname:	rabbitmq-server

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

DAEMON=/usr/sbin/rabbitmq-server
USER=rabbitmq
NODE_COUNT=1

DEFAULTS_FILE=/etc/sysconfig/rabbitmq-server

if [ -f "$DEFAULTS_FILE" ]; then
	. $DEFAULTS_FILE
fi

start() {
	# Check if the service is already running?
	if [ ! -f /var/lock/subsys/ejabberd ]; then
		msg_starting "rabbitmq-server daemon"
		daemon --user $USER $DAEMON start_all $NODE_COUNT -detached
		RETVAL=$?
		if [ $RETVAL -eq 0 ]; then
			touch /var/lock/subsys/rabbitmq-server
		fi
	else
		msg_already_running "rabbitmq-server daemon"
	fi
}

stop() {
	# Stop daemons.
	if [ -f /var/lock/subsys/rabbitmq-server ]; then
		msg_stopping "rabbitmq-server daemon"
		daemon --user $USER /usr/sbin/rabbitmqctl stop
		rm -f /var/lock/subsys/rabbitmq-server
	else
		msg_not_running "rabbitmq-server daemon"
	fi
}

rmq_status() {

	if output="$(/usr/sbin/rabbitmqctl status 2>/dev/null)" ; then
		pid=$(echo "$output" | awk '/{pid,/ { match($0, "{pid,[0-9]+}"); print substr($0,RSTART+5,RLENGTH-6) }')
		uptime=$(echo "$output" | awk '/{uptime,/ { match($0, "{uptime,[0-9]+}"); print substr($0,RSTART+8,RLENGTH-9) }')
		nls "%s (pid %s) is running%s" "rabbitmq-server" "$pid" "$cpuset_msg"
		return 0
	fi
	if [ -f /var/lock/subsys/rabbitmq-server ]; then
		nls "daemon %s dead but subsys (%s) locked" "rabbitmq-server" "rabbitmq-server"
		return 2
	fi
	nls "%s is stopped" "rabbitmq-server"
	return 3
}

RETVAL=0
# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	stop
	start
	;;
  status)
	rmq_status
	;;
  *)
	msg_usage "$0 {start|stop|status}"
	exit 3
esac

exit $RETVAL
