/// <summary> /// Claims a thing. /// </summary> /// <param name="Public">If the thing should be left as a public thing that is searchable.</param> /// <param name="MetaDataTags">Meta-data describing the thing.</param> /// <param name="Callback">Method to call when response to claim is returned.</param> /// <param name="State">State object passed on to the callback method.</param> public void Mine(bool Public, MetaDataTag[] MetaDataTags, NodeResultEventHandler Callback, object State) { StringBuilder Request = new StringBuilder(); Request.Append("<mine xmlns='"); Request.Append(NamespaceDiscovery); Request.Append("' public='"); Request.Append(CommonTypes.Encode(Public)); Request.Append("'>"); string RegistryAddress = this.AddTags(Request, MetaDataTags, this.thingRegistryAddress); Request.Append("</mine>"); this.client.SendIqSet(RegistryAddress, Request.ToString(), (sender, e) => { if (Callback != null) { XmlElement E = e.FirstElement; string NodeJid = string.Empty; ThingReference Node = ThingReference.Empty; if (e.Ok && E != null && E.LocalName == "claimed" && E.NamespaceURI == NamespaceDiscovery) { string NodeId = XML.Attribute(E, "id"); string SourceId = XML.Attribute(E, "src"); string Partition = XML.Attribute(E, "pt"); NodeJid = XML.Attribute(E, "jid"); if (!string.IsNullOrEmpty(NodeId) || !string.IsNullOrEmpty(SourceId) || !string.IsNullOrEmpty(Partition)) { Node = new ThingReference(NodeId, SourceId, Partition); } } NodeResultEventArgs e2 = new NodeResultEventArgs(e, State, NodeJid, Node); try { Callback(this, e2); } catch (Exception ex) { Log.Critical(ex); } } }, null); }
/// <summary> /// Claims a thing. /// </summary> /// <param name="MetaDataTags">Meta-data describing the thing.</param> /// <param name="Callback">Method to call when response to claim is returned.</param> /// <param name="State">State object passed on to the callback method.</param> public void Mine(MetaDataTag[] MetaDataTags, NodeResultEventHandler Callback, object State) { this.Mine(true, MetaDataTags, Callback, State); }