@Override public void readEntryComplete(int rc, long lid, long eid, ChannelBuffer buffer, Object ctx) { BookieSocketAddress bookieAddress = (BookieSocketAddress) ctx; ReadResult<InputStream> rr; if (BKException.Code.OK != rc) { rr = new ReadResult<InputStream>(eid, rc, null, bookieAddress.getSocketAddress()); } else { try { ChannelBufferInputStream is = lh.macManager.verifyDigestAndReturnData(eid, buffer); rr = new ReadResult<InputStream>(eid, BKException.Code.OK, is, bookieAddress.getSocketAddress()); } catch (BKException.BKDigestMatchException e) { rr = new ReadResult<InputStream>(eid, BKException.Code.DigestMatchException, null, bookieAddress.getSocketAddress()); } } readResults.add(rr); if (numBookies.decrementAndGet() == 0) { callback.operationComplete(BKException.Code.OK, readResults); } } };