// Run method public void run(){ exptStartTime = (new Date()).getTime(); // create client to server (Event Listener) Socket socket = null; PrintWriter out = null; try { socket = new Socket (ipOfEventListener, portOfServer); out = new PrintWriter(socket.getOutputStream(), true); while (true){ while (msgBuffer.lock.tryLock()) { // keep polling msgBuffer while (!exptTimeUp() & msgBuffer.isEmpty()) ; // get stuck here until msgBuffer contains something or experiment period is up // send message to Event Listener & clear message buffer out.println(msgBuffer.getWholeMsg()); System.out.println("Sent: "+ msgBuffer.getWholeMsg()); System.out.println("---"); msgBuffer.clear(); msgBuffer.lock.unlock(); } // exit if period for experiment is up if (exptTimeUp()) break; } // Cleanup out.close(); socket.close(); } catch (IOException e) { System.err.println("*** FATAL ERROR: " + e.getMessage()); System.err.println("*** LIKELY REASON: Make sure Push Server is up and listening at the correct IP address and port."); System.exit(1); } catch (Exception e){ System.err.println("*** FATAL ERROR: " + e.getMessage()); System.exit(1); } System.out.println("PushClient exited normally..."); }