thufir

runs, no producer/consumer

Jul 13th, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.00 KB | None | 0 0
  1. package net.bounceme.dur.server.streams;
  2.  
  3. import net.bounceme.dur.jdbc.Title;
  4. import java.io.IOException;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. import java.net.Socket;
  8. import java.util.NoSuchElementException;
  9. import java.util.logging.Level;
  10. import java.util.logging.Logger;
  11. import net.bounceme.dur.jdbc.Queries;
  12.  
  13. public class WorkerRunnable implements Runnable {
  14.  
  15.     private static final Logger log = Logger.getLogger(WorkerRunnable.class.getName());
  16.     protected Socket socket = null;
  17.     private RecordsQueueWrapper recordsQueue = null;
  18.     private final Queries queries = new Queries();
  19.  
  20.     public WorkerRunnable(Socket clientSocket, RecordsQueueWrapper recordsQueue) {
  21.         this.socket = clientSocket;
  22.         this.recordsQueue = recordsQueue;
  23.     }
  24.  
  25.     @Override
  26.     public void run() {
  27.         Title serverTitle = null;
  28.         Title clientTitle = null;
  29.         boolean queueEmpty = false;
  30.         try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
  31.                 ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream())) {
  32.             do {
  33.                 try {
  34.                     serverTitle = recordsQueue.pop();
  35.                     log.info(serverTitle.toString());
  36.                     objectOutputStream.writeObject(serverTitle);
  37.                     log.fine(serverTitle.getClass().getCanonicalName());
  38.                     clientTitle = (Title) objectInputStream.readObject();
  39.                     queries.updateTitle(clientTitle);
  40.                 } catch (NoSuchElementException nse) {
  41.                     queueEmpty = true;
  42.                 }
  43.             } while (!queueEmpty);
  44.         } catch (java.io.EOFException eofe) {
  45.             log.log(Level.WARNING, "why is there no record from client?\n", eofe);
  46.         } catch (IOException | ClassNotFoundException ex) {
  47.             Logger.getLogger(WorkerRunnable.class.getName()).log(Level.SEVERE, null, ex);
  48.         }
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment