Example #1
0
        /// <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)));
        }
Example #2
0
        /// <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);
Example #7
0
        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));
        }