@Override
  public void initialize() throws HyracksDataException {
    try {
      writer.open();
      switch (message.getMessageType()) {
        case END:
          EndFeedMessage endFeedMessage = (EndFeedMessage) message;
          switch (endFeedMessage.getEndMessageType()) {
            case DISCONNECT_FEED:
              hanldeDisconnectFeedTypeMessage(endFeedMessage);
              break;
            case DISCONTINUE_SOURCE:
              handleDiscontinueFeedTypeMessage(endFeedMessage);
              break;
          }
          break;
        case PREPARE_STALL:
          {
            handlePrepareStallMessage((PrepareStallMessage) message);
            break;
          }
        case TERMINATE_FLOW:
          {
            FeedConnectionId connectionId = ((TerminateDataFlowMessage) message).getConnectionId();
            handleTerminateFlowMessage(connectionId);
            break;
          }
        case COMMIT_ACK_RESPONSE:
          {
            handleFeedTupleCommitResponseMessage((FeedTupleCommitResponseMessage) message);
            break;
          }
        case THROTTLING_ENABLED:
          {
            handleThrottlingEnabledMessage((ThrottlingEnabledFeedMessage) message);
            break;
          }
        default:
          break;
      }

    } catch (Exception e) {
      throw new HyracksDataException(e);
    } finally {
      writer.close();
    }
  }