@Override public void tick(Stock stock) { ticks.add((Stock) stock.clone()); Iterator<AsyncContext> it = clients.iterator(); while (it.hasNext()) { AsyncContext actx = it.next(); try { writeStock(actx, stock); } catch (Exception e) { // Ignore. The async error handling will deal with this. } } }
public void writeStock(AsyncContext actx, Stock stock) { HttpServletResponse response = (HttpServletResponse) actx.getResponse(); try { PrintWriter writer = response.getWriter(); writer.write("STOCK#"); // make client parsing easier writer.write(stock.getSymbol()); writer.write("#"); writer.write(stock.getValueAsString()); writer.write("#"); writer.write(stock.getLastChangeAsString()); writer.write("#"); writer.write(String.valueOf(stock.getCnt())); writer.write("\n"); writer.flush(); response.flushBuffer(); } catch (IOException x) { try { actx.complete(); } catch (Exception ignore) { /* Ignore */ } } }