#!/bin/sh
#
#
# chkconfig: 2345 55 25
# description: Terracotta L2 Server Daemon                                                                                                                 
#
# Set runlevels to 2 through 5
# Set Startup order to 55 (must be before Tomcat)
# Set Stop order to 25 (must be after Tomcat)
#

# where Java is installed
JAVA_HOME=/usr/java/latest

# where terracotta is installed
TC_INSTALL_DIR=/usr/local/terracotta

# Set Java options.
JAVA_OPTS="-verbose:gc"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
JAVA_OPTS="$JAVA_OPTS -XX:-TraceClassUnloading"
# The tc start script defaults these to 512M.
#JAVA_OPTS="$JAVA_OPTS -Xmx512M -Xms512M"
JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=5000"
JAVA_OPTS="$JAVA_OPTS -XX:+UseParallelOldGC"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintCommandLineFlags"

export JAVA_HOME
export JAVA_OPTS
export TC_INSTALL_DIR

# where to put stdout/stderr logs
tc_logs=$TC_INSTALL_DIR/logs

# the tc config file
tc_config=/usr/local/shibboleth-idp/conf/tc-config.xml

# user to run tc as
tc_user=tomcat

# the identity of this node
tc_server=$(hostname)
 
start() {
    #
    # Start Terracotta
    #
    echo "Starting Terracotta Server as " ${tc_server}
    case "$tc_user" in
      root|"")
        ${TC_INSTALL_DIR}/bin/start-tc-server.sh -n ${tc_server} -f ${tc_config} >> ${tc_logs}/terracotta.log 2>&1 & 
        ;;
      *)
        su $tc_user -s /bin/sh -c "${TC_INSTALL_DIR}/bin/start-tc-server.sh -n ${tc_server} -f ${tc_config} 2>&1 &" >> ${tc_logs}/terracotta.log &
        ;;
    esac
}
 
stop() {
    #
    # Stop Terracotta
    #
    echo "Stopping Terracotta Server ..."
    case "$tc_user" in
      root|"")
        ${TC_INSTALL_DIR}/bin/stop-tc-server.sh >> ${tc_logs}/terracotta.log 2>&1 &
        ;;
      *)
        su $tc_user -s /bin/sh -c "${TC_INSTALL_DIR}/bin/stop-tc-server.sh 2>&1 &" >> ${tc_logs}/terracotta.log &
        ;;
    esac
}
 
case "$1" in
  start)
    start
    ;; 
  stop)
    stop
    ;;
 
  restart)
    # restart Terracotta
    stop
    # wait just a moment to be sure
    sleep 5
    start
    ;;
    
  *)
    echo "Usage $0 start/stop/restart"
    exit 1
esac

