public ProcessOpTransaction Write(object value, string name, string prop, ProcessFlags flags)
        {
            var op       = new WriteConfigOp(value, name, prop, flags);
            var settings = Settings.IfNone(Map <string, object> .Empty).AddOrUpdate($"{name}@{prop}", value);

            return(new ProcessOpTransaction(ProcessId, Ops.Enqueue(op), settings));
        }
Example #2
0
        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);
        }
        public static Que <T> toQueue <T>(IEnumerable <T> items)
        {
            var q = new Que <T>();

            foreach (var item in items)
            {
                q = q.Enqueue(item);
            }
            return(q);
        }
        public static Que <T> Queue <T>(params T[] items)
        {
            var q = new Que <T>();

            foreach (var item in items)
            {
                q = q.Enqueue(item);
            }
            return(q);
        }
Example #6
0
 public static Que <T> enq <T>(Que <T> queue, T value) =>
 queue.Enqueue(value);