InboxDirective StatefulUserInbox(Actor <S, T> actor, IActorInbox inbox, UserControlMessage msg, ActorItem parent) { if (IsPaused) { userQueue = userQueue.Enqueue(msg); } else { while (userQueue.Count > 0) { // Don't process messages if we've been paused if (IsPaused) { return(InboxDirective.Pause); } var qmsg = userQueue.Peek(); userQueue = userQueue.Dequeue(); ProcessInboxDirective(ActorInboxCommon.UserMessageInbox(actor, inbox, qmsg, parent), qmsg); } if (IsPaused) { // Don't process the message if we've been paused userQueue = userQueue.Enqueue(msg); return(InboxDirective.Pause); } return(ProcessInboxDirective(ActorInboxCommon.UserMessageInbox(actor, inbox, msg, parent), msg)); } return(InboxDirective.Default); }
InboxDirective StatefulUserInbox(Actor <S, T> actor, IActorInbox inbox, UserControlMessage msg, ActorItem parent) { if (IsPaused) { userQueue = userQueue.Enqueue(msg); } else { while (userQueue.Count > 0) { var qmsg = userQueue.Peek(); userQueue = userQueue.Dequeue(); ActorInboxCommon.UserMessageInbox(actor, inbox, qmsg, parent); } var directive = ActorInboxCommon.UserMessageInbox(actor, inbox, msg, parent); if (directive == InboxDirective.PushToFrontOfQueue) { var newQueue = Que <UserControlMessage> .Empty; while (userQueue.Count > 0) { newQueue = newQueue.Enqueue(userQueue.Peek()); userQueue.Dequeue(); } userQueue = newQueue; } } return(InboxDirective.Default); }
Unit Run(Que <ProcessOp> ops) { if (ops.Count == 0) { return(unit); } ops.Peek().Run(ProcessId); return(Run(ops.Dequeue())); }
public static Option <T> peek <T>(Que <T> queue) { try { return(Some(queue.Peek())); } catch (InvalidOperationException) { return(None); } }
public static T peekUnsafe <T>(Que <T> queue) => queue.Peek();