#! /usr/bin/env bash

### BEGIN INIT INFO
# Provides:             CorfuDB-sequencer
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:
# Short-Description:    CorfuDB Sequencer
### END INIT INFO

umask 022

ROLE=sequencer
ROLENAME="CorfuDB Sequencer"
PIDFILE=/var/run/corfudb.${ROLE}.pid
PREFIX=/usr/bin

. /lib/lsb/init-functions

export PATH="${PATH:+$PATH:}/usr/sbin/:usr/bin"

case "$1" in
    start)
        log_daemon_msg "Starting $ROLENAME" "CorfuDB-$ROLE"
        if start-stop-daemon --start --quiet  --oknodo --pidfile $PIDFILE -x $PREFIX/corfuDBLaunch $ROLE start; then
            log_end_msg 0
        else
            log_end_msg 1
        fi
        ;;
    stop)
        log_daemon_msg "Stopping $ROLENAME" "CorfuDB-$ROLE"
        if start-stop-daemon --stop --quiet  --oknodo --pidfile $PIDFILE; then
            log_end_msg 0
        else
            log_end_msg 1
        fi
        ;;
    restart)
        log_daemon_msg "Restarting $ROLENAME" "CorfuDB-$ROLE"
        set +e
        start-stop-daemon --stop --quiet --retry 30 --pidfile $PIDFILE
        RET="$?"
        set -e
        case $RET in
            0)
                if start-stop-daemon --start --quiet  --oknodo --pidfile $PIDFILE -x $PREFIX/corfuDBLaunch $ROLE start; then
                    log_end_msg 0
                else
                    log_end_msg 1
                fi
                ;;
            1)
                log_progress_msg "(not running)"
                log_end_msg 0
                ;;
            *)
                log_progress_msg "(failed to stop)"
                log_end_msg 1
                ;;
            esac
        ;;
    status)
        status_of_proc -p $PIDFILE ${JAVA_HOME}/bin/java && exit 0 || exit $?
        ;;
    *)
        log_action_msg "Usage $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

exit 0
