/// <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)); }