Exemplo n.º 1
0
        /// <summary>
        /// Adds the extension to the client.
        /// </summary>
        /// <param name="Instance">Actor instance.</param>
        /// <param name="Client">XMPP Client</param>
        /// <returns>Extension object.</returns>
        public override Task <object> Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client)
        {
            ControlServer Extension;

            if (Client.TryGetTag("ProvisioningClient", out object Obj) && Obj is ProvisioningClient ProvisioningClient)
            {
                Extension = new ControlServer(Client, ProvisioningClient);
            }
            else
            {
                Extension = new ControlServer(Client);
            }

            Client.SetTag("ControlServer", Extension);

            Extension.OnGetControlParameters += (Node) =>
            {
                this.Model.ExternalEvent(Instance, "OnGetControlParameters",
                                         new KeyValuePair <string, object>("Node", Node),
                                         new KeyValuePair <string, object>("Client", Client));

                List <ControlParameter> Parameters = new List <ControlParameter>();

                foreach (ControlParameterNode Parameter in this.parameters)
                {
                    Parameter.AddParameters(Parameters, Instance);
                }

                return(Task.FromResult <ControlParameter[]>(Parameters.ToArray()));
            };

            return(Task.FromResult <object>(Extension));
        }