package no.ntnu.fp.net.network.client; import java.net.Socket; import java.util.HashMap; import java.util.concurrent.BlockingDeque; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; import no.ntnu.fp.model.Appointment; import no.ntnu.fp.model.Meeting; import no.ntnu.fp.model.XmlHandler; import no.ntnu.fp.net.network.Request; import no.ntnu.fp.net.network.Request.Method; public class ClientWorker implements Runnable { //fields //private HashMap<String, Socket> clients; private BlockingDeque<Object> inQueue; private Socket mySocket; private CommunicationController communication; private LinkedBlockingDeque<Object> testQueue; //Constructor public ClientWorker(Socket mySocket, LinkedBlockingDeque<Object>testQueue, CommunicationController communicationController){ this.mySocket = mySocket; //this.inQueue = inQueue; this.testQueue = testQueue; communication = communicationController; } //methods @Override public void run() { while(true){ //Sleep try { Thread.currentThread().sleep(5000); System.out.println("Running"); Object obj = testQueue.takeFirst(); if(handle(obj)){ System.out.println("dropped"); }else { testQueue.putFirst(obj); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public boolean handle(Object data){ Request response = (Request) data; if (response.getMethod() == Method.MEETING_NOTIFICATION) { Meeting meeting = (Meeting)response.getObject(); communication.updateMeeting(meeting); System.out.println("We have a notification"); return true; } else if(response.getMethod() == Method.CHANGE_MEETING_NOTFICATION) { Meeting meeting = (Meeting)response.getObject(); communication.updateMeeting(meeting); System.out.println("Someone changed a meeting (views)"); return true; }else if(response.getMethod() == Method.CHANGE_APPOINTMENT_NOTIFICATION) { Appointment appointment = (Appointment)response.getObject(); communication.updateAppointment(appointment); System.out.println("Someone changed an appointment (views)"); return true; }else if(response.getMethod() == Method.MEETING_REPLY){ Meeting meeting = (Meeting)response.getObject(); communication.updateMeetingState(meeting); System.out.println("Someone changed an meeting status"); return true; }else if(response.getMethod() == Method.DELETE_APPOINTMENT_RESPONSE){ //TODO:Handle this System.out.println("S� du vil at jeg skal slette en avtale, hmm"); communication.deleteEntry((Integer)response.getObject()); return true; }else if(response.getMethod() == Method.DELETE_MEETING_RESPONSE){ System.out.println("S� du vil at jeg skal slette eit m�te, hmm "); communication.deleteEntry((Integer)response.getObject()); return true; }else { return false; } } }