#!/bin/sh
die() {
	echo >&2 "$@"
	exit 1
}
dietail() {
	echo >&2 "$@"
	echo >&2 "tail $LOG:"
	tail $LOG
	exit 1
}
[ $# -ge 1 ] || die "Usage: $0 <server version> [<additional parameters for campaignd>]"

VERSION=$1
shift
PARAMETERS="$@"

case $VERSION in
1.4|1.6)
	THREADS=4
	;;
*)
	THREADS=2
	;;
esac

SERVERBASE=$HOME/campaignd/$VERSION/

[ -d "$SERVERBASE" ] || die "Server '$VERSION' not found."
[ -d "$SERVERBASE/data" ] || die "Server '$VERSION' has no data/ dir."
[ -d "$SERVERBASE/logs" ] || mkdir $SERVERBASE/logs

ulimit -c unlimited

cd $SERVERBASE || exit 1

while [ true ]
do
	DATE=$(date +"%Y%m%d-%H%M%S")
	COMMAND="$HOME/bin/campaignd-$VERSION $THREADS $PARAMETERS"
	LOG="$SERVERBASE/logs/campaignd.$DATE.log"
	echo "started $VERSION campaignd with command: '$COMMAND' logging to: $LOG"
	$COMMAND &> $LOG
	EXIT_CODE="$?"
	echo "exit code: $EXIT_CODE"
	mv gmon.out gmon.$DATE.out &> /dev/null
	[ "$EXIT_CODE" != "0" ] || exit
	[ "$EXIT_CODE" != "1" ] || dietail #"File I/O error."
	[ "$EXIT_CODE" != "2" ] || dietail #"Could not parse config file."
	[ "$EXIT_CODE" != "3" ] || dietail #"Could not bind to port."
	[ "$EXIT_CODE" != "127" ] || dietail #cannot open shared object file
done
