private boolean consumeResultObjectDBUpdate(final ResultObject t) { boolean ok; //collect all the objects collectorDBUpdate.add(t); DBUpdateInFlight.moveTailForward();//only move forward when it is consumed. if (collectorDBUpdate.size() == t.getGroupSize()) { //now ready to send, we have all the data ok =publishMultiResponseDBUpdate(t.getConnectionId(), t.getSequenceId()); } else { ok = true;//added to list } return ok; }
private boolean consumeResultObjectDBRest(final ResultObject t) { boolean ok; /////////////////////////////// if (0 == t.getGroupSize()) { ok = service.publishHTTPResponse(t.getConnectionId(), t.getSequenceId(), 200, HTTPContentTypeDefaults.JSON, w-> { Templates.singleTemplateDBRest.render(w, t); t.setStatus(-1); DBRestInFlight.moveTailForward();//only move forward when it is consumed. DBRestInFlight.publishTailPosition(); }); } else { //collect all the objects assert(isValidToAdd(t, collectorDBRest)); collectorDBRest.add(t); DBRestInFlight.moveTailForward(); if (collectorDBRest.size() == t.getGroupSize()) { //now ready to send, we have all the data ok =publishMultiDBResponse(t.getConnectionId(), t.getSequenceId()); } else { ok = true;//added to list } //moved forward so we can read next but write logic will still be blocked by state not -1 } return ok; }
fortuneInFlight.moveTailForward();//only move forward when it is consumed. fortuneInFlight.publishTailPosition(); t.list().clear();