#!/bin/sh

set -e

SERVERDISPLAY=42
CLIENTDISPLAY=43

wait_for_process() {
	PROCESS="$1"
	
	for i in `seq 10`; do
	    sleep 1
	    echo "Check $i whether '$PROCESS' is running"
	    if pgrep -f "$PROCESS"; then
	        echo "Process '$PROCESS' found."
	        return 0
	    fi
	done
	echo "Timeout on checking for process '$PROCESS'!"
	return 1
}

echo 'Starting primary VNC server (server side) ...'
Xtightvnc :$SERVERDISPLAY -geometry 800x600 >/tmp/display{$SERVERDISPLAY}.log 2>&1 &
wait_for_process "Xtightvnc :$SERVERDISPLAY"
echo 'Starting secondary VNC server (client side) ...'
Xtightvnc :$CLIENTDISPLAY -geometry 1024x768 >/tmp/display{$CLIENTDISPLAY}.log 2>&1 &
wait_for_process "Xtightvnc :$CLIENTDISPLAY"

echo 'Show primary server log up to now. ..'
cat /tmp/display{$SERVERDISPLAY}.log
echo 'Show secondary server log up to now ...'
cat /tmp/display{$CLIENTDISPLAY}.log

echo 'Starting VNC viewer on secondary VNC server ...'
DISPLAY=:$CLIENTDISPLAY jtightvncviewer localhost:$SERVERDISPLAY >/tmp/vncviewer.log 2>&1 &
sleep 5
wait_for_process "java tightvncviewer.VncViewer"

echo 'Show entire server display log ...'
cat /tmp/display{$SERVERDISPLAY}.log

echo 'Show entire client display log ...'
cat /tmp/display{$CLIENTDISPLAY}.log

echo 'Show vnc viewer log ...'
cat /tmp/vncviewer.log

echo 'Stopping viewer and VNC servers ... '
pkill jtightvncviewer
pkill Xtightvnc
echo 'Done.'
