#!/bin/sh
#
# $Id: proxyctl,v 1.12.6.1 2013/03/14 10:24:00 ronald Exp $
#
# Copyright (C) 2006 independIT Integrative Technologies GmbH
#

print_usage()
{
	P=`basename $0`
	echo "Usage: $P [start|stop]"
}

do_start()
{
	if test -f $PIDFILE
        then
		echo "Another proxy seems to be running already"
		exit 1
	fi
	CMDSTRING="$BICSUITEJAVA_PX $BICSUITEJAVAFLAGS_PX -cp '$BICSUITECLASSPATH' de.independit.scheduler.proxy.Proxy '$CFGFILE'"

        TMPLOG=`ls -1rt $LOGFILE.* 2>/dev/null | tail -1`
        ACTLOG=`ls -1rt $LOGFILE.* 2>/dev/null | tail -1`
        $SCROLLLOG $LOGFILE -o $PIDFILE -e $CMDSTRING

        # we need to wait until the new Logfile has been created
        while [ "$TMPLOG" = "$ACTLOG" ]; do
                sleep 1
                ACTLOG=`ls -1rt $LOGFILE.* 2>/dev/null | tail -1`
        done
        if $BICSUITEGREP -q 'Error locking pipe' $PIDFILE; then
                tail -1 $PIDFILE
                echo
                exit 1
        fi
        CHILDPID=`head -1 $PIDFILE`
        ACTLOG=`ls -1rt $LOGFILE.* | tail -1`
        until $BICSUITEGREP ' -- SDMS -- Proxy -- ready --' $ACTLOG >/dev/null; do
                sleep 1
                until $BICSUITEKILL -s 0 $CHILDPID >/dev/null 2>&1; do
                        sleep 1
                        cat $ACTLOG
                        exit 1
                done
        done

	echo 'Proxy started'
}

do_stop()
{
	rm $PIDFILE 2>/dev/null
	if $BICSUITEFUSER -k $LOGFILE &>/dev/null; then
		echo 'Proxy terminated'
	else
		echo 'No proxy found'
	fi
}

# -----------------------------------------------------------------------------
# main
# -----------------------------------------------------------------------------

if [ -z "$BICSUITECONFIG" ]; then
	BICSUITECONFIG=$BICSUITEHOME/etc
fi

. $BICSUITEHOME/lib/functions.sh || exit 1
. $BICSUITECONFIG/proxy.conf || exit 1

PATH=/bin:/usr/bin:/sbin:/usr/sbin
LOGFILE=$BICSUITELOGDIR/BICproxy.out
PIDFILE=$BICSUITELOGDIR/BICproxy.pid

OPERATION=$1
shift

case "$OPERATION" in
	start)		ensure_pipe $LOGFILE;
			do_start "$@";;

	stop)		ensure_pipe $LOGFILE;
			do_stop ;;

	*)		print_usage ;
			exit 1 ;;
esac

exit 0
