/*
Dexter Travis
Bradley University
2001/2002 Senior Project Botdock
http://pioneer1.bradley.edu
http://cegt201.bradley.edu/projects/proj2002/botdock/
*/


import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;



//network server for robotics platform.

//master class for Botdock project 2001/2002 Bradley University
public class botdock
	{
	
		private static final int maxusers = 3;//max number of users on the server
		private static final int port = 8051;//port number that server listens to.
		private static ServerSocket botserver;//declare ServerSocket
		
		
		public static void main(String A[])
		{
			try
			{
				botserver = new ServerSocket(port, maxusers);//start new ServerSocket
				startup();//calls other startup routines
				// main server loop
				//starts a new ServiceClient thread for each connection request
				//otherwise waits for next user
				while(true)
				{
					new ServiceClient(botserver.accept());
				}
			}
			catch (Exception e)
			{
				System.out.println("Error: " +e);
				log.log("Error: " +e);
			}
			System.out.println("BOTSERVER STOPPED");//alert that the server has stopped
			log.log("S botserver stopped");
		}
		
		public static void startup()
		{
			System.out.println("BOTSERVER STARTED");
			log.logstart("logfile.txt");
			log.log("S botserver started");   //will log all movements of robot
			embeddedinterface.startbot();//start robot
			find.start();
		}
		
		public static void terminate()
		{
			embeddedinterface.shutdownbot();//gracefully shutdown the robot
			ServiceClient.sendtoall("server going down");//inform users of imminent doom
			ServiceClient.KillAll();
			log.logclose();
			System.exit(0);
		}
		
	//end of botdock class
	}