#!/bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin


TIMEOUT=30
EXEC_PATH=/run/swap/trigger_shell/swap_manager
ERROR_PATH=/run/swap/trigger_shell/swap_manager_error

manager_pid()
{
	/bin/cat /run/swap/manager/pid 2> /dev/null
}


# usage:
#    starter starter_path [timeout (ms)]
starter()
{
        STARTER_PATH=$1
        TIMEOUT=${2:-0}
        STEP=200
        SLEEPVAL=0.2

        # enable systemd service
        /bin/rm -f $STARTER_PATH
        /bin/touch $STARTER_PATH

        # wait
        while [[ -e $STARTER_PATH ]]; do
                if [[ 0 -gt $TIMEOUT ]]; then
                        /bin/echo "Timeout wait remove '$STARTER_PATH'"
                        rm -f $STARTER_PATH

                        exit 1
                fi

                sleep $SLEEPVAL
                TIMEOUT=$[$TIMEOUT-$STEP]
        done

        rm -f $STARTER_PATH
}

# usage:
#   check_fd path
check_fd()
{
        /bin/ls $(dirname $1) 2> /dev/null | /bin/grep "^$(basename $1)$" > /dev/null
}



M_PID=$(manager_pid)
if [ "$M_PID" != "" ]; then
	/bin/echo "swap_manager already exist, pid=$M_PID"
	exit 1
fi


starter $EXEC_PATH $(($TIMEOUT * 1000)) || exit $?
check_fd $ERROR_PATH && /bin/echo "Error: $(/bin/cat $ERROR_PATH)"
