package no.ntnu.fp.net.network.server; import java.io.DataOutputStream; import java.net.Socket; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; import java.util.Queue; import java.util.Scanner; import java.util.concurrent.BlockingQueue; import no.ntnu.fp.model.Authenticate; import no.ntnu.fp.net.network.Tuple; /** *Handle request from the clients * * @author bj0rn * */ public class Worker implements Runnable { //Fields private Queue<Tuple <Socket, Object>> inQueue; private Map<String, Socket> clients; private Scanner input; private DataOutputStream os; private ServerController serverController; //Constructor public Worker(Queue<Tuple<Socket, Object>> inQueue, Map<String, Socket> clients){ //Setup connection to db //super(); System.out.println("The connection is made..."); this.inQueue = inQueue; this.clients = clients; input = new Scanner(System.in); serverController = new ServerController(clients, inQueue); System.out.println("ServerControllercreated"); } //Methods @Override public void run() { // TODO Auto-generated method stub System.out.println("Created worker thread"); while(true){ try { //Sleep Thread.currentThread().sleep(500); if(!inQueue.isEmpty()){ Tuple<Socket, Object> data = inQueue.poll(); //System.out.println("Type of data: "+data.y.getClass().getName()); handleRequest(data); } } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } public void handleRequest(Tuple<Socket, Object> data){ serverController.inspectRequest(data); } }