#!/usr/bin/perl

use IO::Socket;

$TOPPATH = "/tmp";
$NAME = "topology";
$FILENAME = "$TOPPATH/$NAME.dot";
$EXT = "png";

`touch $TOPPATH/$NAME.$EXT`;

$remote = IO::Socket::INET->new(
                        Proto    => "tcp",
                        PeerAddr => "localhost",
                        PeerPort => "2004",
                    )
                  or die "cannot connect to daytime port at localhost";

$f;

system "display -backdrop -size 1024x800 -geometry 1024x800 -update 5 $TOPPATH/$NAME.$EXT &";

while ( <$remote> ) { 

	$line = $_;
	$f = $f . $line;

	if ( $line =~ /}/i ) {
		print "* ";
		open DOTFILE, ">$FILENAME";
		print DOTFILE $f;
		close DOTFILE;
		$f = "";
		
		`neato -Tpng -Gsize=9,6 -Gbgcolor=white -Gsplines=true -Nstyle=filled -Nfontsize=15 -Ncolor=grey -Nfillcolor=lightblue -Nfontname=verdana -Ecolor=orange -Elen=4 -Earrowsize=2 $FILENAME -o $TOPPATH/$NAME.new`;
		
		`mv $TOPPATH/$NAME.new $TOPPATH/$NAME.$EXT`;
		`cp $TOPPATH/$NAME.dot $TOPPATH/$NAME-\$(date +'%Y-%m-%d-%H-%M-%S').dot`;
	}
}
