public static void writeBehaviours(WindowNode windowNode, MarshallerWriteContext outCtx) throws IOException { Behavior[] behaviors = windowNode.getBehaviors(); WindowMemory memory = (WindowMemory) outCtx.wm.getNodeMemory(windowNode); Object[] behaviorContexts = (Object[]) memory.behaviorContext; for (int i = 0; i < behaviors.length; i++) { if (windowNode.getBehaviors()[i] instanceof SlidingTimeWindow) { outCtx.writeShort(PersisterEnums.SLIDING_TIME_WIN); outCtx.writeInt(i); writeSlidingTimeWindowBehaviour( (SlidingTimeWindow) windowNode.getBehaviors()[i], (SlidingTimeWindowContext) behaviorContexts[i], outCtx); } else if (windowNode.getBehaviors()[i] instanceof SlidingLengthWindow) { outCtx.writeShort(PersisterEnums.SLIDING_LENGTH_WIN); outCtx.writeInt(i); writeSlidingLengthWindowBehaviour( (SlidingLengthWindow) windowNode.getBehaviors()[i], (SlidingLengthWindowContext) behaviorContexts[i], outCtx); } } outCtx.writeShort(PersisterEnums.END); }
public static void readBehaviors( WindowNode windowNode, WindowMemory memory, MarshallerReaderContext inCtx) throws IOException { short token = -1; while ((token = inCtx.readShort()) != PersisterEnums.END) { int i = inCtx.readInt(); Object object = ((Object[]) memory.behaviorContext)[i]; switch (token) { case PersisterEnums.SLIDING_TIME_WIN: { readSlidingTimeWindowBehaviour( windowNode, memory, (SlidingTimeWindow) windowNode.getBehaviors()[i], (SlidingTimeWindowContext) object, inCtx); break; } case PersisterEnums.SLIDING_LENGTH_WIN: { readSlidingLengthWindowBehaviour( windowNode, memory, (SlidingLengthWindow) windowNode.getBehaviors()[i], (SlidingLengthWindowContext) object, inCtx); break; } } } }