public static IFeedFrameHandler getFeedFrameHandler( FrameDistributor distributor, FeedId feedId, RoutingMode routingMode, FeedRuntimeType runtimeType, int partition, int frameSize) throws IOException { IFeedFrameHandler handler = null; switch (routingMode) { case IN_MEMORY_ROUTE: handler = new InMemoryRouter(distributor.getRegisteredReaders().values(), runtimeType, partition); break; case SPILL_TO_DISK: handler = new DiskSpiller(distributor, feedId, runtimeType, partition, frameSize); break; case DISCARD: handler = new DiscardRouter(distributor, feedId, runtimeType, partition); break; default: throw new IllegalArgumentException("Invalid routing mode" + routingMode); } return handler; }
@Override public void handleFrame(ByteBuffer frame) throws HyracksDataException { FrameTupleAccessor fta = distributor.getFta(); fta.reset(frame); int nTuples = fta.getTupleCount(); nDiscarded += nTuples; if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.warning( "Discarded additional [" + runtimeType + "]" + "(" + partition + ")" + " " + nTuples); } }
private void createFile() throws IOException { Date date = new Date(); String dateSuffix = date.toString().replace(' ', '_'); String fileName = feedId.toString() + "_" + frameDistributor.getFeedRuntimeType() + "_" + frameDistributor.getPartition() + "_" + dateSuffix; file = new File(fileName); if (!file.exists()) { boolean success = file.createNewFile(); if (!success) { throw new IOException("Unable to create spill file for feed " + feedId); } } bos = new BufferedOutputStream(new FileOutputStream(file)); if (LOGGER.isLoggable(Level.INFO)) { LOGGER.info("Created Spill File for feed " + feedId); } }