/// <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) { SensorServer Extension; if (Client.TryGetTag("ProvisioningClient", out object Obj) && Obj is ProvisioningClient ProvisioningClient) { Extension = new SensorServer(Client, ProvisioningClient, true); } else { Extension = new SensorServer(Client, true); } Client.SetTag("SensorServer", Extension); Extension.OnExecuteReadoutRequest += (Sender, e) => { if (!this.Model.ExternalEvent(Instance, "OnExecuteReadoutRequest", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client))) { e.ReportErrors(true, new ThingError(ThingReference.Empty, "No event handler registered on sensor.")); } return(Task.CompletedTask); }; return(Task.FromResult <object>(Extension)); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { SensorServer Extension; if (Client.TryGetTag("ProvisioningClient", out object Obj) && Obj is ProvisioningClient ProvisioningClient) { Extension = new SensorServer(Client, ProvisioningClient, true); } else { Extension = new SensorServer(Client, true); } Client.SetTag("SensorServer", Extension); Extension.OnExecuteReadoutRequest += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnExecuteReadoutRequest", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.CompletedTask); }
/// <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)); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task 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)); return(Task.FromResult <ControlParameter[]>(new ControlParameter[0])); }; return(Task.CompletedTask); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { SensorClient Extension = new SensorClient(Client); Client.SetTag("SensorClient", Extension); return(Task.CompletedTask); }
/// <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) { SensorClient Extension = new SensorClient(Client); Client.SetTag("SensorClient", Extension); return(Task.FromResult <object>(Extension)); }
/// <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) { if (Client.ContainsTag("SensorServer")) { throw new Exception("Define provisioning clients before any sensor server extensions."); } if (Client.ContainsTag("ControlServer")) { throw new Exception("Define provisioning clients before any control server extensions."); } if (Client.ContainsTag("ConcentratorServer")) { throw new Exception("Define provisioning clients before any concentrator server extensions."); } ProvisioningClient Extension = new ProvisioningClient(Client, this.componentAddress); Client.SetTag("ProvisioningClient", Extension); Extension.CanControlQuestion += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnExecuteReadoutRequest", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.CanReadQuestion += (Sender, e) => { this.Model.ExternalEvent(Instance, "CanReadQuestion", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.IsFriendQuestion += (Sender, e) => { this.Model.ExternalEvent(Instance, "IsFriendQuestion", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.CacheCleared += (Sender, e) => { this.Model.ExternalEvent(Instance, "CacheCleared", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); }; return(Task.FromResult <object>(Extension)); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { SynchronizationClient Extension = new SynchronizationClient(Client); Client.SetTag("SynchronizationClient", Extension); Extension.OnUpdated += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnUpdated", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); }; return(Task.CompletedTask); }
/// <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) { ConcentratorClient Extension = new ConcentratorClient(Client); Client.SetTag("ConcentratorClient", Extension); Extension.OnEvent += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnEvent", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.FromResult <object>(Extension)); }
/// <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) { AvatarClient Extension = new AvatarClient(Client); Client.SetTag("Avatar", Extension); Extension.AvatarAdded += (Sender, e) => { this.Model.ExternalEvent(Instance, "AvatarAdded", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.AvatarRemoved += (Sender, e) => { this.Model.ExternalEvent(Instance, "AvatarRemoved", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.AvatarUpdated += (Sender, e) => { this.Model.ExternalEvent(Instance, "AvatarUpdated", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.VCardReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "VCardReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.FromResult <object>(Extension)); }
/// <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) { ConcentratorServer Extension; if (!Client.TryGetTag("ProvisioningClient", out object Obj) || !(Obj is ProvisioningClient ProvisioningClient)) { ProvisioningClient = null; } if (!Client.TryGetTag("ThingRegistryClient", out Obj) || !(Obj is ThingRegistryClient ThingRegistryClient)) { ThingRegistryClient = null; } Extension = new ConcentratorServer(Client, ThingRegistryClient, ProvisioningClient); Client.SetTag("ConcentratorServer", Extension); return(Task.FromResult <object>(Extension)); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { if (Client.ContainsTag("ConcentratorServer")) { throw new Exception("Define thing registry clients before any concentrator server extensions."); } ThingRegistryClient Extension = new ThingRegistryClient(Client, this.componentAddress); Client.SetTag("ThingRegistryClient", Extension); Extension.Claimed += (Sender, e) => { this.Model.ExternalEvent(Instance, "Claimed", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.Disowned += (Sender, e) => { this.Model.ExternalEvent(Instance, "Disowned", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.Removed += (Sender, e) => { this.Model.ExternalEvent(Instance, "Removed", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.CompletedTask); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { PepClient Extension = new PepClient(Client); Client.SetTag("PEP", Extension); Extension.NonPepItemNotification += (Sender, e) => { this.Model.ExternalEvent(Instance, "NonPepItemNotification", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.NonPepItemRetraction += (Sender, e) => { this.Model.ExternalEvent(Instance, "NonPepItemRetraction", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.OnUserActivity += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnUserActivity", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.OnUserAvatarMetaData += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnUserAvatarMetaData", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.OnUserLocation += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnUserLocation", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.OnUserMood += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnUserMood", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.OnUserTune += (Sender, e) => { this.Model.ExternalEvent(Instance, "OnUserTune", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.CompletedTask); }
/// <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 async Task <object> Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { ContractsClient Extension = new ContractsClient(Client, this.componentAddress); await Extension.LoadKeys(true); Client.SetTag("ContractsClient", Extension); Extension.ContractDeleted += (Sender, e) => { this.Model.ExternalEvent(Instance, "ContractDeleted", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.ContractSigned += (Sender, e) => { this.Model.ExternalEvent(Instance, "ContractSigned", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.ContractUpdated += (Sender, e) => { this.Model.ExternalEvent(Instance, "ContractUpdated", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.IdentityUpdated += (Sender, e) => { this.Model.ExternalEvent(Instance, "IdentityUpdated", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionForContractReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionForContractReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionedContractResponseReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionedContractResponseReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionForIdentityReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionForIdentityReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionedIdentityResponseReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionedIdentityResponseReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionForSignatureReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionForSignatureReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionedSignatureResponseReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionedSignatureResponseReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionForPeerReviewIDReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionForPeerReviewIDReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PetitionedPeerReviewIDResponseReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PetitionedPeerReviewIDResponseReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Extension); }
/// <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) { MultiUserChatClient Extension = new MultiUserChatClient(Client, this.componentAddress); Client.SetTag("MUC", Extension); Extension.OccupantPresence += (Sender, e) => { this.Model.ExternalEvent(Instance, "OccupantPresence", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.OccupantRequest += (Sender, e) => { this.Model.ExternalEvent(Instance, "OccupantRequest", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.PrivateMessageReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "PrivateMessageReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RegistrationRequest += (Sender, e) => { this.Model.ExternalEvent(Instance, "RegistrationRequest", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RoomDeclinedInvitationReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "RoomDeclinedInvitationReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RoomDestroyed += (Sender, e) => { this.Model.ExternalEvent(Instance, "RoomDestroyed", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RoomInvitationReceived += (Sender, e) => { this.Model.ExternalEvent(Instance, "RoomInvitationReceived", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RoomMessage += (Sender, e) => { this.Model.ExternalEvent(Instance, "RoomMessage", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RoomOccupantMessage += (Sender, e) => { this.Model.ExternalEvent(Instance, "RoomOccupantMessage", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RoomPresence += (Sender, e) => { this.Model.ExternalEvent(Instance, "RoomPresence", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.RoomSubject += (Sender, e) => { this.Model.ExternalEvent(Instance, "RoomSubject", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.FromResult <object>(Extension)); }
/// <summary> /// Adds the extension to the client. /// </summary> /// <param name="Instance">Actor instance.</param> /// <param name="Client">XMPP Client</param> public override Task Add(IActor Instance, Waher.Networking.XMPP.XmppClient Client) { PubSubClient Extension = new PubSubClient(Client, this.componentAddress); Client.SetTag("PubSub", Extension); Extension.AffiliationNotification += (Sender, e) => { this.Model.ExternalEvent(Instance, "AffiliationNotification", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.ItemNotification += (Sender, e) => { this.Model.ExternalEvent(Instance, "ItemNotification", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.ItemRetracted += (Sender, e) => { this.Model.ExternalEvent(Instance, "ItemRetracted", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.NodePurged += (Sender, e) => { this.Model.ExternalEvent(Instance, "NodePurged", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.SubscriptionRequest += (Sender, e) => { this.Model.ExternalEvent(Instance, "SubscriptionRequest", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; Extension.SubscriptionStatusChanged += (Sender, e) => { this.Model.ExternalEvent(Instance, "SubscriptionStatusChanged", new KeyValuePair <string, object>("e", e), new KeyValuePair <string, object>("Client", Client)); return(Task.CompletedTask); }; return(Task.CompletedTask); }