#! /bin/sh
# Copyright (c) Ericsson
# All rights reserved.
#
# Author: Ed Silva <ed.silva@ericsson.com>
# Date: Jun 9, 2011
# RTMPS 
#
# /etc/init.d/rmserver
#
### BEGIN INIT INFO
# Provides:       rmserver
# Required-Start: $network $remote_fs $syslog
# Should-Start:   Helix Server
# Required-Stop:  $network $remote_fs $syslog
# Should-Stop:    Helix Server
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Short-Description: Helix Server
# Description:    Helix Server
### END INIT INFO

TTV_TOOLS=/opt/tandbergtv/tools

HELIX_BIN="${TTV_TOOLS}/helix/Bin/rmserver"
HELIX_CONF="${TTV_TOOLS}/helix/rmserver.cfg"
PID_FILE="/var/run/rmserverd.pid"

. /etc/rc.status
rc_reset

# Check for missing binary
if [ ! -x ${HELIX_BIN} ]; then
	echo -n >&2 "Helix, ${HELIX_BIN} is not installed. "
	rc_status -s
	exit 5
fi

# be extra carefull cause connection fail if TMPDIR is not writeable
export TMPDIR="/tmp"

case "$1" in
	start)

	if [ -x /usr/bin/free ]
	then
		mem_size=`/usr/bin/free  | grep ^Mem | awk '{printf("%d", $2/1024)}'`
	else
		${mem_size}="1024"
	fi
		echo -n "Starting Helix daemon "
		if [ ! -f ${HELIX_CONF} ]; then
			echo -n >&2 "Helix configuration file, ${HELIX_CONF} does not exist. "
			rc_status -s
			exit 6
		fi
		checkproc -p ${PID_FILE} ${HELIX_BIN}
		case $? in
			0) echo -n "- Warning: daemon already running. " ;;
			1) echo -n "- Warning: ${PID_FILE} exists. " ;;
		esac
		test -f /etc/sysconfig/language && \
			. /etc/sysconfig/language
		export LC_ALL="$RC_LC_ALL"
		export LC_CTYPE="$RC_LC_CTYPE"
		export LANG="$RC_LANG"
	
		if [[ ${mem_size} -gt 24000  ]]
		then
			startproc -u nobody ${HELIX_BIN}  ${HELIX_CONF}
		else
			startproc -u nobody ${HELIX_BIN}  -m 256 ${HELIX_CONF}
		fi

		ps -ef | egrep 'helix|rmserver' | awk '$3 == 1 {print $2}' > ${PID_FILE}
		
		unset LC_ALL LC_CTYPE LANG
		rc_status -v
		;;
	stop)
		echo -n "Shutting down Helix daemon "
		checkproc -p ${PID_FILE} ${HELIX_BIN} || \
			echo -n " Warning: daemon not running. "
		killproc -p ${PID_FILE} -t 10 ${HELIX_BIN}
		rc_status -v
		;;
	try-restart|condrestart)
		if test "$1" = "condrestart"; then
			echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
		fi
		$0 status
		if test $? = 0; then
			$0 restart
		else 
			rc_reset
		fi
		rc_status

		sleep 10
		;;
	restart)
		$0 stop
		$0 start
		rc_status
		;;
	force-reload|reload)
		echo -n "Reloading Helix daemon "
		checkproc -p ${PID_FILE} ${HELIX_BIN} && \
			touch ${PID_FILE} || \
			echo -n >&2 " Warning: daemon not running. "
		killproc -p ${PID_FILE} -HUP ${HELIX_BIN}  ${HELIX_CONF} ${HELIX_CONF}
		rc_status -v
		;;
	status)
		echo -n "Checking for Helix daemon "
		checkproc -p ${PID_FILE} ${HELIX_BIN}
		rc_status -v
		;;
	probe)
		test ${HELIX_CONF} -nt ${PID_FILE} && echo reload
		;;
	*)
		echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
		exit 1
		;;
esac
rc_exit
