Пример #1
0
  private static ProtobufMessages.Timers writeTimers(
      Collection<TimerJobInstance> timers, MarshallerWriteContext outCtx) {
    if (!timers.isEmpty()) {
      List<TimerJobInstance> sortedTimers = new ArrayList<TimerJobInstance>(timers);
      Collections.sort(
          sortedTimers,
          new Comparator<TimerJobInstance>() {
            public int compare(TimerJobInstance o1, TimerJobInstance o2) {
              return (int) (o1.getJobHandle().getId() - o2.getJobHandle().getId());
            }
          });

      ProtobufMessages.Timers.Builder _timers = ProtobufMessages.Timers.newBuilder();
      for (TimerJobInstance timer : sortedTimers) {
        JobContext jctx = ((SelfRemovalJobContext) timer.getJobContext()).getJobContext();
        if (jctx instanceof ObjectTypeNode.ExpireJobContext
            && !((ObjectTypeNode.ExpireJobContext) jctx)
                .getExpireAction()
                .getFactHandle()
                .isValid()) {
          continue;
        }
        TimersOutputMarshaller writer = outCtx.writersByClass.get(jctx.getClass());
        Timer _timer = writer.serialize(jctx, outCtx);
        if (_timer != null) {
          _timers.addTimer(_timer);
        }
      }
      return _timers.build();
    }
    return null;
  }
Пример #2
0
  public static void writeTimers(Collection<TimerJobInstance> timers, MarshallerWriteContext outCtx)
      throws IOException {
    List<TimerJobInstance> sortedTimers = new ArrayList<TimerJobInstance>(timers);
    Collections.sort(
        sortedTimers,
        new Comparator<TimerJobInstance>() {
          public int compare(TimerJobInstance o1, TimerJobInstance o2) {
            return (int) (o1.getJobHandle().getId() - o2.getJobHandle().getId());
          }
        });

    for (TimerJobInstance timer : sortedTimers) {
      outCtx.writeShort(PersisterEnums.DEFAULT_TIMER);
      JobContext jctx = ((SelfRemovalJobContext) timer.getJobContext()).getJobContext();
      TimersOutputMarshaller writer = outCtx.writersByClass.get(jctx.getClass());
      writer.write(jctx, outCtx);
    }
    outCtx.writeShort(PersisterEnums.END);
  }