#!/bin/bash
#
# Copyright 2014 Confluent Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# When stopping, search for both the current SchemaRegistryMain class and the deprecated Main class.
APP_NAME=schema-registry

SCHEMA_REGISTRY_HOME=/usr/lib/$APP_NAME

# SCHEMA REGISTRY env script
. $SCHEMA_REGISTRY_HOME/config/schema-registry-env.sh

PID=0

#PID & LOG DIRs

[ -z $PID_DIR ] && PID_DIR="/var/run/$APP_NAME"
[ -z $LOG_DIR ] && LOG_DIR="/var/log/$APP_NAME"

#Name of PID file
PID_FILE="$PID_DIR/$APP_NAME.pid"

#Name of LOG ERR file
ERR_FILE="$LOG_DIR/$APP_NAME.err"

[ -z $MAX_WAIT_TIME ] && MAX_WAIT_TIME=120

function getPID {
   if [ ! -d $PID_DIR ]; then
      printf "Can't find pid dir.\n"
      exit 1
   fi
   if [ ! -f $PID_FILE ]; then
     PID=0
     return 1
   fi

   PID="$(<$PID_FILE)"
   return 0
}

function schemaRegistryIsRunning {
   if [ $1 -eq 0 ]; then return 0; fi

   ps -p $1 > /dev/null

   if [ $? -eq 1 ]; then
     return 0
   else
     return 1
   fi
}

function schemaRegistryKill {
   local localPID=$1
   kill $localPID || return 1
   for ((i=0; i<MAX_WAIT_TIME; i++)); do
      schemaRegistryIsRunning $localPID
      if [ $? -eq 0 ]; then return 0; fi
      sleep 1
   done

   kill -s KILL $localPID || return 1
   for ((i=0; i<MAX_WAIT_TIME; i++)); do
      schemaRegistryIsRunning $localPID
      if [ $? -eq 0 ]; then return 0; fi
      sleep 1
   done

   return 1
}

function schemaRegistryStop {
   getPID
   schemaRegistryIsRunning $PID
   if [ $? -eq 0 ]; then
     printf "Schema Registry is not running.\n"
     rm -f $PID_FILE
     return 0
   fi

   printf "Stopping Schema Registry [$PID] "
   schemaRegistryKill $PID 2>>$ERR_FILE

   if [ $? -ne 0 ]; then
     printf "failed. \n"
     exit 1
   else
     rm -f $PID_FILE
     printf "succeeded.\n"
     return 0
   fi
}

schemaRegistryStop