#!/usr/bin/env bash

NAME="eltex-pcrf"

JAVA=/usr/bin/java
JAVA_INIT_HEAP=256m
JAVA_MAX_HEAP=512m
JAR="/usr/lib/eltex-pcrf/$NAME.jar"
JVM_OPTS=

# Options for Java Garbage Collector
GC_OPTS="-XX:+UseG1GC \
-XX:+UseStringDeduplication \
-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/$NAME"

if [ -f /etc/default/$NAME ]; then
    source /etc/default/$NAME || exit 1
fi

# 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"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens java.base/jdk.internal.misc=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS -Dio.netty.tryReflectionSetAccessible=true"

export JDK_JAVA_OPTIONS

if [ -z "$JVM_OPTS" ]; then
    JVM_OPTS="$JMX_OPTS $GC_OPTS $HEAP_DUMP_OPTS -Xms$JAVA_INIT_HEAP -Xmx$JAVA_MAX_HEAP $VERTX_CACHE_DIR_OPT"
fi

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

