/// <summary> /// Cancel an already scheduled message /// </summary> public static Unit cancelScheduled(ProcessId pid, string key) { var inboxKey = ActorInboxCommon.ClusterScheduleKey(pid); LocalScheduler.RemoveExistingScheduledMessage(pid, key); return(tell(pid.Take(1).Child("system").Child("scheduler"), Scheduler.Msg.RemoveFromSchedule(inboxKey, key))); }
/// <summary> /// Re-schedule an already scheduled message /// </summary> public static Unit reschedule(ProcessId pid, string key, DateTime when) { var inboxKey = ActorInboxCommon.ClusterScheduleKey(pid); LocalScheduler.Reschedule(pid, key, when); return(tell(pid.Take(1).Child("system").Child("scheduler"), Scheduler.Msg.Reschedule(inboxKey, key, when))); }
static void InitLocalScheduler() { if (localScheduler != null) { localScheduler.Dispose(); } localScheduler = LocalScheduler.Run(); }
public Unit Tell(object message, Schedule schedule, ProcessId sender, string inbox, Message.Type type, Message.TagSpec tag) => schedule == Schedule.Immediate ? transactionalIO ? TellNoIO(message, sender, inbox, type, tag) : ProcessOp.IO(() => TellNoIO(message, sender, inbox, type, tag)) : schedule.Type == Schedule.PersistenceType.Ephemeral ? LocalScheduler.Push(schedule, ProcessId, m => TellNoIO(m, sender, inbox, type, tag), message) : DoSchedule(message, schedule, sender, type, tag);
public Unit Tell(object message, Schedule schedule, ProcessId sender, Message.TagSpec tag) => LocalScheduler.Push(schedule, ProcessId, m => Tell(m, sender, "tell", Message.Type.User), message);
public Unit Tell(object message, Schedule schedule, ProcessId sender, Message.TagSpec tag) => LocalScheduler.Push(schedule, Actor.Id, m => Inbox.Tell(Inbox.ValidateMessageType(m, sender), sender), message);
public Unit Tell(object message, Schedule schedule, ProcessId sender, Message.TagSpec tag) { var sessionId = ActorContext.SessionId; return(LocalScheduler.Push(schedule, Actor.Id, m => Inbox.Tell(Inbox.ValidateMessageType(m, sender), sender, sessionId), message)); }