public long getTimeToNextJob() { synchronized( queue ) { TimerJobInstance item = (TimerJobInstance) queue.peek(); return (item != null) ? item.getTrigger().hasNextFireTime().getTime() - this.timer.get() : -1; } }
TimerJobInstance item = (TimerJobInstance) queue.peek(); long fireTime; while ( item != null && ((item.getTrigger().hasNextFireTime() != null && ( ( fireTime = item.getTrigger().hasNextFireTime().getTime()) <= endTime ) ) ) ) {
public void internalSchedule(TimerJobInstance timerJobInstance) { Date date = timerJobInstance.getTrigger().hasNextFireTime(); Callable<Void> item = (Callable<Void>) timerJobInstance; JDKJobHandle jobHandle = (JDKJobHandle) timerJobInstance.getJobHandle(); long then = date.getTime(); long now = System.currentTimeMillis(); ScheduledFuture<Void> future = null; if ( then >= now ) { future = scheduler.schedule( item, then - now, TimeUnit.MILLISECONDS ); } else { future = scheduler.schedule( item, 0, TimeUnit.MILLISECONDS ); } jobHandle.setFuture( future ); jobFactoryManager.addTimerJobInstance( timerJobInstance ); }
public boolean isPendingReactivation() { DefaultJobHandle timeHandle = (DefaultJobHandle) getJobHandle(); Trigger trig = timeHandle.getTimerJobInstance().getTrigger(); return trig.hasNextFireTime() != null && trig instanceof CronTrigger; } }
public void write(JobContext jobCtx, MarshallerWriteContext outputCtx) throws IOException { outputCtx.writeShort( PersisterEnums.EXPIRE_TIMER ); // ExpireJob, no state ExpireJobContext ejobCtx = (ExpireJobContext) jobCtx; WorkingMemoryReteExpireAction expireAction = ejobCtx.getExpireAction(); outputCtx.writeInt( expireAction.getFactHandle().getId() ); outputCtx.writeUTF( expireAction.getNode().getEntryPoint().getEntryPointId() ); outputCtx.writeUTF( ((ClassObjectType) expireAction.getNode().getObjectType()).getClassType().getName() ); DefaultJobHandle jobHandle = (DefaultJobHandle) ejobCtx.getJobHandle(); PointInTimeTrigger trigger = (PointInTimeTrigger) jobHandle.getTimerJobInstance().getTrigger(); outputCtx.writeLong( trigger.hasNextFireTime().getTime() ); }
public Trigger createTrigger( Activation item, WorkingMemory wm ) { long timestamp = ((InternalWorkingMemory) wm).getTimerService().getCurrentTime(); String[] calendarNames = item.getRule().getCalendars(); Calendars calendars = ((InternalWorkingMemory) wm).getCalendars(); long timeSinceLastFire = 0; ScheduledAgendaItem schItem = ( ScheduledAgendaItem ) item; if ( schItem.getJobHandle() != null ) { DefaultJobHandle jh = ( DefaultJobHandle) schItem.getJobHandle(); IntervalTrigger preTrig = ( IntervalTrigger ) jh.getTimerJobInstance().getTrigger(); if ( preTrig.hasNextFireTime() != null ) { timeSinceLastFire = timestamp - preTrig.getLastFireTime().getTime(); } } long newDelay = (delay != null ? evalDelay( item, wm ) : 0) - timeSinceLastFire; if ( newDelay < 0 ) { newDelay = 0; } return new IntervalTrigger( timestamp, this.startTime, this.endTime, this.repeatLimit, newDelay, period != null ? evalPeriod( item, wm ) : 0, calendarNames, calendars ); }
public ProtobufMessages.Timers.Timer serialize(JobContext jobCtx, MarshallerWriteContext outputCtx) { // ExpireJob, no state ExpireJobContext ejobCtx = ( ExpireJobContext ) jobCtx; WorkingMemoryReteExpireAction expireAction = ejobCtx.getExpireAction(); DefaultJobHandle jobHandle = ( DefaultJobHandle ) ejobCtx.getJobHandle(); PointInTimeTrigger trigger = ( PointInTimeTrigger ) jobHandle.getTimerJobInstance().getTrigger(); return ProtobufMessages.Timers.Timer.newBuilder() .setType( ProtobufMessages.Timers.TimerType.EXPIRE ) .setExpire( ProtobufMessages.Timers.ExpireTimer.newBuilder() .setHandleId( expireAction.getFactHandle().getId() ) .setEntryPointId( expireAction.getNode().getEntryPoint().getEntryPointId() ) .setClassName( ((ClassObjectType)expireAction.getNode().getObjectType()).getClassType().getName() ) .setNextFireTimestamp( trigger.hasNextFireTime().getTime() ) .build() ) .build(); } }