コード例 #1
0
ファイル: MqActorTcp.cs プロジェクト: ewin66/ComSim
        /// <summary>
        /// Starts an instance of an actor.
        /// </summary>
        public override async Task StartInstance()
        {
            await this.connectionTask;

            if (string.IsNullOrEmpty(this.credentials.ObjectId))
            {
                await Database.Insert(this.credentials);
            }

            Variables                Variables     = new Variables();
            ObjectProperties         Properties    = new ObjectProperties(this, Variables);
            List <SubscriptionState> Subscriptions = new List <SubscriptionState>();

            if (this.Parent is ISimulationNodeChildren Parent)
            {
                foreach (ISimulationNode Node in Parent.Children)
                {
                    if (Node is Subscribe Subscribe)
                    {
                        SubscriptionState Subscription = new SubscriptionState()
                        {
                            ExtEventName = Expression.Transform(Subscribe.ExtEvent, "{", "}", Properties),
                            Queue        = Expression.Transform(Subscribe.Queue, "{", "}", Properties),
                            Actor        = this,
                            Model        = this.Model,
                            Cancel       = new ManualResetEvent(false),
                            Stopped      = new TaskCompletionSource <bool>()
                        };

                        Subscription.Subscribe(Client);
                        Subscriptions.Add(Subscription);
                    }
                }
            }

            this.subscriptions = Subscriptions.ToArray();
        }