/** * @param request * @param connection * @return */ public DataList handlePublisherRequest( PublishRequestTuple request, AbstractLengthPrependerClient connection) { String identifier = request.getIdentifier(); DataList dl; if (publisherBuffers.containsKey(identifier)) { /* * close previous connection with the same identifier which is guaranteed to be unique. */ AbstractLengthPrependerClient previous = publisherChannels.put(identifier, connection); if (previous != null) { eventloop.disconnect(previous); } dl = publisherBuffers.get(identifier); try { dl.rewind(request.getBaseSeconds(), request.getWindowId()); } catch (IOException ie) { throw new RuntimeException(ie); } } else { dl = Tuple.FAST_VERSION.equals(request.getVersion()) ? new FastDataList(identifier, blockSize, numberOfCacheBlocks) : new DataList(identifier, blockSize, numberOfCacheBlocks); publisherBuffers.put(identifier, dl); } dl.setSecondaryStorage(storage, storageHelperExecutor); return dl; }