/** Deliver a SEQUENCER message received from the network. */ private void reliableSEQDeliver(SeqOrderEvent event) { Message msg = event.getMessage(); long[] uniformInfo = new long[vs.view.length]; for (int i = uniformInfo.length; i > 0; i--) uniformInfo[i - 1] = msg.popLong(); mergeUniformInfo(uniformInfo); SEQHeader header = SEQHeader.pop(event.getMessage()); log.debug( "[" + ls.my_rank + "] Received SEQ message " + header.id + ":" + header.sn + " timestamp is " + timeProvider.currentTimeMillis()); lastOrderList[ls.my_rank] = header.order; newUniformInfo = true; // add it to the sequencer list S.add(new ListSEQContainer(header, timeProvider.currentTimeMillis())); log.debug("Received SEQ from " + event.orig + " at time " + timeProvider.currentTimeMillis()); // and tries to deliver messages that already have the order deliverRegular(); deliverUniform(); }