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);
        }
      }