/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package netzprog02_j_ultimatefinal;

import java.net.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Daniel Leese
 */
public class MainWorker {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Socket sock = null;
        BufferedWriter bwriter = null;
        boolean bool = true;
        ObjectInputStream ois = null;
        ObjectOutputStream oos = null;
        int workerID = 0;

        try {
            sock = new Socket(args[0], 4321);
            //bwriter = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
            ois = new ObjectInputStream(sock.getInputStream());
            oos = new ObjectOutputStream(sock.getOutputStream());
            workerID = (Integer) ois.readObject(); // bekommt id von gateway zugewiesen

            Object recv = new Object();
            while (bool) { // sollte irgend wie noch beendet werden!!!!!
                oos.writeObject("getJob"); // job anfordern
                System.out.println("Worker " + workerID + " | sent getJob");
                recv = ois.readObject();
                SumUpJob job = (SumUpJob) recv; // job empfangen

                System.out.println("Worker " + workerID + " | Neuer Job: " + job.getId() + "\n");
                job.executeJob(); // job ausfuehren
                job.setWorkerID(workerID);
                oos.writeObject(job); // job zurueck an gateway senden
                System.out.println("Worker " + workerID + " | Job fertig: " + job.getId() + "\n\n");
            }

            oos.writeObject("close");
            sock.close();
            System.out.println(sock.isClosed());
        } catch (EOFException e) {
            System.out.println("Server weg... tschuess");
        } catch (UnknownHostException e) {
            System.err.println(e);
        } catch (IOException e) {
            System.err.println(e);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(MainWorker.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}