#!/bin/sh

. /etc/PG.conf

[ $# -ne 2 ] && exit

TASKID=$1
SCHID=$2

LOGDIR="/usr/ramdisk/tmp/sac/crontab"
CRONTAB_STAT="${LOGDIR}/sac_crontab.stat"
AP_STAT="${LOGDIR}/crontab_${SCHID}_ap.stat"

FLOWEYE="/usr/ramdisk/bin/floweye"


utf8togb2312()
{
	${FLOWEYE} iconv utf8togb2312 "${1}"
}


save_log()
{
	row="id=${SCHID}"
	content="id=${SCHID} exec_time=`date +%s` task_stat=OK task_cnt=${1}"

	if [ ! -f ${CRONTAB_STAT} ]; then
		echo "${content}" > ${CRONTAB_STAT}
		return
	fi

	exist=`cat ${CRONTAB_STAT} | grep "${row} "`
	if [ "${exist}" = "" ]; then
		echo "${content}" >> ${CRONTAB_STAT}
		return
	fi

	awk -v bak="${CRONTAB_STAT}.bak" -v row="${row}" -v content="${content}" \
	'{
		if($1 == row) {
			print content >> bak;
			next;
		} else
			print $0 >> bak;
	}' ${CRONTAB_STAT}

	mv ${CRONTAB_STAT}.bak ${CRONTAB_STAT}
}

loop=1
LOG_MSG=""
DONECNT=0
FAILCNT=0
TASKSTAT=0

while [ "${TASKSTAT}" != "2" ]
do
	sleep 1
	loop=$((${loop}+1))
	[ "${loop}" = "30" ] && break;

	row=1
	INVCNT=0
	DONECNT=0
	FAILCNT=0
	TMOUTCNT=0
	result=`${FLOWEYE} sactask get taskid=${TASKID}`

	while read taskid taskbirth taskstate cmdstr apid apname cmdbirth cmdelapse cmdstat reply others
	do
		if [ "${taskid}" = "TASKID_NOTFOUND" ]; then
			cmdstat=5
		fi

		TASKSTAT=${taskstate}
		APCNT=$((${APCNT} + 1))
		case "${cmdstat}" in
			2) 
				INVCNT=$((${INVCNT} + 1))
				;;
			5) 
				DONECNT=$((${DONECNT} + 1))
				;;
			6)
				FAILCNT=$((${FAILCNT} + 1))
				;;
			7)
				TMOUTCNT=$((${TMOUTCNT} + 1))
				;;
			"*")
				;;
		esac

		AP_MSG="apid=${apid} apname=`utf8togb2312 ${apname}` cmdstat=${cmdstat} reply=\"${reply}\""
		if [ "${row}" = "1" ]; then
			row=2
			echo ${AP_MSG} > ${AP_STAT}.bak
		else
			echo ${AP_MSG} >> ${AP_STAT}.bak
		fi
	done << EOF
	${result}
EOF

done

save_log "${DONECNT},${FAILCNT},${TMOUTCNT},${INVCNT}"
mv ${AP_STAT}.bak ${AP_STAT}
