#!/usr/bin/env bash

NAME="eltex-pcrf"

if [ -e "/etc/default/$NAME" ]; then
    # use params from /etc/default/eltex-pcrf
    source /etc/default/$NAME
    exec "$JAVA" $JVM_OPTS -jar "$JAR"
    exit $? # exit with exec exit code
fi

JAVA=/usr/bin/java
JAVA_INIT_HEAP=256m
JAVA_MAX_HEAP=512m

# Add the JAVA 9 and newer specific start-up parameters required by Hazelcast
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-modules java.se"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-exports java.base/jdk.internal.ref=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/java.lang=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/java.nio=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/sun.nio.ch=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.management/sun.management=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED"
export JDK_JAVA_OPTIONS

# Options for Java Garbage Collector
GC_OPTS="-XX:+UseParallelGC \
-Xlog:gc*,gc+age=trace:/var/log/eltex-pcrf/gc.log:time,uptime,level,tags:filecount=7,filesize=5M"

# To monitor via JMX - jconsole to host:acctPort
#JMX_OPTS="-Dcom.sun.management.jmxremote \
#-Dcom.sun.management.jmxremote.acctPort=8085 \
#-Dcom.sun.management.jmxremote.authenticate=false \
#-Dcom.sun.management.jmxremote.ssl=false \
#-Djava.rmi.server.hostname=127.0.0.1"

HEAP_DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-pcrf"
VERTX_CACHE_DIR_OPT="-Dvertx.cacheDirBase=/var/lib/$NAME"

JVM_OPTS="$JMX_OPTS $GC_OPTS $HEAP_DUMP_OPTS -Xms$JAVA_INIT_HEAP -Xmx$JAVA_MAX_HEAP $VERTX_CACHE_DIR_OPT"
JAR="/usr/lib/eltex-pcrf/$NAME.jar"

exec "$JAVA" $JVM_OPTS -jar "$JAR"

