public DiscoveryClient startDiscovery(TimeSpan span) { try { var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); var discoveryClient = new DiscoveryClient(endPoint); discoveryClient.FindCompleted += DiscoveryClient_FindCompleted; discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged; FindCriteria findCriteria = new FindCriteria(); findCriteria.Duration = span; findCriteria.MaxResults = int.MaxValue; findCriteria.ContractTypeNames.Add(new System.Xml.XmlQualifiedName("NetworkVideoTransmitter", "http://www.onvif.org/ver10/network/wsdl")); discoveryClient.FindAsync(findCriteria); this.OnRecoveryChange("", DiscoveryEvent.EventTypes.startEvent); System.Diagnostics.Trace.WriteLine("DiscoveryClient.startDiscovery O.K ..."); return(discoveryClient); } catch (Exception ex) { System.Diagnostics.Trace.WriteLine("DiscoveryServer.startDiscovery: " + ex.Message); return(null); } }
/// <summary> /// Starts a discovery process /// </summary> public void Find(DiscoveryType type = DiscoveryType.WsDiscovery) { ActivityServices.Clear(); #if !ANDROID switch (type) { case DiscoveryType.WsDiscovery: using (var wsBrowser = new DiscoveryClient(new UdpDiscoveryEndpoint())) { wsBrowser.FindProgressChanged += WsBrowserFindProgressChanged; wsBrowser.FindCompleted += WsBrowserFindCompleted; wsBrowser.FindAsync(new FindCriteria(typeof(IDiscovery))); } break; case DiscoveryType.Zeroconf: { var zcBrowser = new ServiceBrowser(); zcBrowser.ServiceAdded += zcBrowser_ServiceAdded; zcBrowser.Browse("_am._tcp", "local"); } break; } #else Probe(); #endif }
void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { discoveryClient.FindAsync(new FindCriteria(typeof(IExtDataService)) { Duration = TimeSpan.FromSeconds(5) }); }
private static DiscoveryClient BuildDiscoveryClient(string adapterId, DiscoveryVersion version) { var epDiscovery = new UdpDiscoveryEndpoint(version); var b = (CustomBinding)epDiscovery.Binding; if (b == null) { return(null); } epDiscovery.TransportSettings.MulticastInterfaceId = adapterId; b.Elements.Insert(0, new MulticastCapabilitiesBindingElement(true)); var discoveryClient = new DiscoveryClient(epDiscovery); discoveryClient.FindProgressChanged += DiscoveryClientFindProgressChanged; //discoveryClient.FindCompleted += DiscoveryClientFindCompleted; FindCriteria findCriteria = new FindCriteria { Duration = TimeSpan.FromMinutes(5), MaxResults = int.MaxValue }; foreach (var ctn in CtNs) { findCriteria.ContractTypeNames.Add(ctn); } discoveryClient.FindAsync(findCriteria); return(discoveryClient); }
public static Task <FindResponse> FindTaskAsync(this DiscoveryClient discoveryClient, FindCriteria criteria) { if (discoveryClient == null) { throw new ArgumentNullException("discoveryClient"); } TaskCompletionSource <FindResponse> tcs = new TaskCompletionSource <FindResponse>(discoveryClient); EventHandler <FindCompletedEventArgs> completedHandler = null; completedHandler = delegate(object sender, FindCompletedEventArgs e) { AsyncCompatLibExtensions.HandleEapCompletion <FindResponse>(tcs, true, e, () => e.Result, delegate { discoveryClient.FindCompleted -= completedHandler; }); }; discoveryClient.FindCompleted += completedHandler; try { discoveryClient.FindAsync(criteria, tcs); } catch { discoveryClient.FindCompleted -= completedHandler; throw; } return(tcs.Task); }
private void ProbeInitialServices(ServiceHost serviceHost) { var probe = new DiscoveryClient(UdpDiscoveryEndpoint ?? new UdpDiscoveryEndpoint()); probe.FindProgressChanged += (_, args) => RegisterService(serviceHost, args.EndpointDiscoveryMetadata); probe.FindCompleted += (_, args) => probe.Close(); probe.FindAsync(ProbeCriteria ?? new FindCriteria()); }
private void LocateExistingEndpoints() { m_DiscoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); m_DiscoveryClient.FindProgressChanged += (s, e) => HandleOnlineAnnouncementReceived(e.EndpointDiscoveryMetadata); m_DiscoveryClient.FindCompleted += OnFindCompleted; m_DiscoveryClient.FindAsync(new FindCriteria(typeof(IBootstrapEndpoint))); }
public void Probe(TimeSpan timeout = default(TimeSpan)) { _discoveryClient.FindAsync(new FindCriteria(ServiceInterface) { MaxResults = timeout == TimeSpan.Zero ? 1 : int.MaxValue, Duration = timeout == TimeSpan.Zero ? TimeSpan.MaxValue : timeout }); }
private void RefreshTopology(object state) { // heartbeat - will remove any failing nodes Parallel.ForEach(topologyState.Keys, FindEndpointMetadata); var discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); discoveryClient.FindProgressChanged += DiscoveryClientOnFindProgressChanged; discoveryClient.FindCompleted += DiscoveryClientOnFindCompleted; discoveryClient.FindAsync(new FindCriteria(typeof(INodeStateService)), state); }
static void Main(string[] args) { var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); var discoveryClient = new DiscoveryClient(endPoint); discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged; FindCriteria findCriteria = new FindCriteria(); findCriteria.Duration = TimeSpan.MaxValue; findCriteria.MaxResults = int.MaxValue; discoveryClient.FindAsync(findCriteria); Console.ReadKey(); }
public static IObservable <EndpointDiscoveryMetadata> GetServiceDiscoveryData <TServiceContract>() { var result = new Subject <EndpointDiscoveryMetadata>(); var discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); discoveryClient.FindProgressChanged += (_, e) => result.OnNext(e.EndpointDiscoveryMetadata); discoveryClient.FindCompleted += (_, e) => { result.OnCompleted(); discoveryClient.Close(); }; discoveryClient.FindAsync(new FindCriteria(typeof(TServiceContract))); return(result); }
static void FindCalculatorServiceAddress() { DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); discoveryClient.FindCompleted += new EventHandler <FindCompletedEventArgs>(ClientFindCompleted); discoveryClient.FindProgressChanged += new EventHandler <FindProgressChangedEventArgs>(ClientFindProgressChanged); Console.WriteLine("Finding ICalculatorServices endpoints asynchronously...\n"); FindCriteria findCriteria = new FindCriteria(typeof(ICalculatorService)); findCriteria.Duration = TimeSpan.FromSeconds(5); // Find ICalculatorService endpoint asynchronously. The results are returned asynchronously via events discoveryClient.FindAsync(findCriteria); }
//method that starts searching matching endpoints asynchrously private static void TryToFindServiceAsync() { DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); discoveryClient.FindProgressChanged += new EventHandler <FindProgressChangedEventArgs>(DiscoveryClient_FindProgressChanged); discoveryClient.FindCompleted += new EventHandler <FindCompletedEventArgs>(DiscoveryClient_FindCompleted); discoveryClient.FindAsync(new FindCriteria(typeof(IMakaoGameHostService)) { Duration = TimeSpan.FromSeconds(10) }); var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Info("Searching for host endpoint in async way started."); }
private static void TryToFindServiceAsync() { Console.WriteLine("Trying to find service"); DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint()); discoveryClient.FindProgressChanged += new EventHandler <FindProgressChangedEventArgs>(DiscoveryClient_FindProgressChanged); discoveryClient.FindCompleted += new EventHandler <FindCompletedEventArgs>(DiscoveryClient_FindCompleted); discoveryClient.FindAsync(new FindCriteria(typeof(IMakaoGameHostService)) { Duration = TimeSpan.FromSeconds(10) }); }
static void Main(string[] args) { var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); var discoveryClient = new DiscoveryClient(endPoint); discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged; FindCriteria findCriteria = new FindCriteria(); findCriteria.Duration = TimeSpan.MaxValue; findCriteria.MaxResults = int.MaxValue; // Edit: optionally specify contract type, ONVIF v1.0 findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", "http://www.onvif.org/ver10/network/wsdl")); discoveryClient.FindAsync(findCriteria); Console.ReadKey(); }
public void Discover(int discoveryTimeOutMiliseconds, EventHandler <FindCompletedEventArgs> discoveryCompleted) { var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); FindCriteria findCriteria = new FindCriteria(); var contractTypeName = "NetworkVideoTransmitter"; var contractTypeNamespace = "http://www.onvif.org/ver10/network/wsdl"; // those parametes are defined by onvif standard findCriteria.ContractTypeNames.Add(new XmlQualifiedName(contractTypeName, contractTypeNamespace)); var discoveryClient = new DiscoveryClient(endPoint); discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged; discoveryClient.FindCompleted += discoveryCompleted; findCriteria.Duration = TimeSpan.FromMilliseconds(discoveryTimeOutMiliseconds); findCriteria.MaxResults = int.MaxValue; discoveryClient.FindAsync(findCriteria); }
private void findServiceButton_Click(object sender, EventArgs e) { tracer.Verb("ScreenCastControl::findServiceButton_Click(...)"); //logger.Debug("findServiceButton_Click(...)"); if (!finding) { var udpDiscoveryEndpoint = new UdpDiscoveryEndpoint(); udpDiscoveryEndpoint.EndpointBehaviors.Add(new WcfDiscoveryAddressCustomEndpointBehavior()); if (discoveryClient == null) { discoveryClient = new DiscoveryClient(udpDiscoveryEndpoint); discoveryClient.FindCompleted += DiscoveryClient_FindCompleted; discoveryClient.FindProgressChanged += DiscoveryClient_FindProgressChanged; } var criteria = new FindCriteria(typeof(IScreenCastService)); criteria.Duration = TimeSpan.FromSeconds(5); finding = true; findServiceButton.Text = "_Cancel"; labelStatus.Text = "_Finding..."; connectButton.Enabled = false; hostsComboBox.Enabled = false; hostsComboBox.DataSource = null; discoveryClient.FindAsync(criteria, this); } else { if (discoveryClient != null) { discoveryClient.CancelAsync(this); discoveryClient.Close(); } } }
void _SearchONVIF() { var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); var discoveryClient = new DiscoveryClient(endPoint); discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged; FindCriteria findCriteria = new FindCriteria { Duration = new TimeSpan(0, 0, 10), MaxResults = int.MaxValue }; // Edit: optionally specify contract type, ONVIF v1.0 findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", "http://www.onvif.org/ver10/network/wsdl")); discoveryClient.FindAsync(findCriteria); comboBox1.Invoke(new Action(() => { comboBox1.Items.Clear(); })); }
public async Task <EndpointAddress> Discover() { if (_isRunning) { _discoveryClient.CancelAsync(null); } return(await Task <EndpointAddress> .Factory.StartNew(() => { _isRunning = true; _discoveryClient.FindAsync(new FindCriteria(typeof(IServerAppService))); while (true) { Thread.Sleep(100); if (!_isRunning) { Logger.Debug("Service discovery returns endpoint {0}", _address); return _address; } } }).ConfigureAwait(false)); }
private void discover_Click(object sender, RoutedEventArgs e) { name.IsEnabled = false; userType.IsEnabled = false; connect.IsEnabled = false; statusWriter.WriteLine("Discovering Services..."); discoveryCount = 0; // Setup function to call when discovery completed -- two different discovery processes needed to find the two different services subscriptionDC.FindCompleted += new EventHandler <FindCompletedEventArgs>(SubscriptionFindCompleted); approvalDC.FindCompleted += new EventHandler <FindCompletedEventArgs>(ApprovalFindCompleted); // Start the discovery process for both services being looked for FindCriteria sfc = new FindCriteria(typeof(ISubscriptionService)); FindCriteria afc = new FindCriteria(typeof(IApprovalProcess)); sfc.Duration = new TimeSpan(0, 0, 2); afc.Duration = new TimeSpan(0, 0, 2); subscriptionDC.FindAsync(sfc); approvalDC.FindAsync(afc); }
private void btnProbe_Click(object sender, EventArgs e) { ProbeDialog dlg = new ProbeDialog(); dlg.InitializeTypes(_types); dlg.InitializeScopes(_scopes); DialogResult result = dlg.ShowDialog(); if (result == DialogResult.Cancel) { return; } SynchronizeParameters(dlg); InitializeDiscoveryClient(dlg.DiscoveryVersion); lvDevices.Items.Clear(); FindCriteria request = new FindCriteria(); request.ScopeMatchBy = new Uri("http://schemas.xmlsoap.org/ws/2005/04/discovery/rfc3986"); foreach (ListViewItem item in dlg.TypesList.CheckedItems) { XmlQualifiedName type = new XmlQualifiedName(item.SubItems[0].Text, item.SubItems[1].Text); request.ContractTypeNames.Add(type); } foreach (ListViewItem item in dlg.ScopesList.CheckedItems) { request.Scopes.Add(new Uri((item.SubItems[0].Text))); } request.Duration = new TimeSpan(0, 0, 0, 10, 0); btnProbe.Enabled = false; _discoveryClient.FindAsync(request); }
static void Main(string[] args) { Console.WriteLine("Discovering devices..."); var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005); FindCriteria findCriteria = new FindCriteria(); var contractTypeName = "NetworkVideoTransmitter"; var contractTypeNamespace = "http://www.onvif.org/ver10/network/wsdl"; // those parametes are defined by onvif standard findCriteria.ContractTypeNames.Add(new XmlQualifiedName(contractTypeName, contractTypeNamespace)); var discoveryClient = new DiscoveryClient(endPoint); discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged; discoveryClient.FindCompleted += discoveryClient_FindCompleted; findCriteria.Duration = TimeSpan.MaxValue; findCriteria.MaxResults = int.MaxValue; discoveryClient.FindAsync(findCriteria); Console.ReadKey(); }
private void findServiceButton_Click(object sender, EventArgs e) { logger.Debug("\nFinding IRemoteDesktopService..."); var udpDiscoveryEndpoint = new UdpDiscoveryEndpoint(); udpDiscoveryEndpoint.EndpointBehaviors.Add(new WcfDiscoveryAddressCustomEndpointBehavior()); DiscoveryClient discoveryClient = new DiscoveryClient(udpDiscoveryEndpoint); var criteria = new FindCriteria(typeof(IRemoteDesktopService)); criteria.Duration = TimeSpan.FromSeconds(5); ProgressForm progress = new ProgressForm { StartPosition = FormStartPosition.CenterParent, }; List <ComboBoxItem> hostItems = new List <ComboBoxItem>(); discoveryClient.FindCompleted += (o, a) => { logger.Debug("FindCompleted(...)"); if (a.Cancelled) { logger.Debug("Cancelled"); } if (a.Error != null) { logger.Debug(a.Error.ToString()); } if (!a.Cancelled) { var result = a.Result; if (result != null) { foreach (var ep in result.Endpoints) { string address = ep.Address.ToString(); string hostName = address; var extensions = ep.Extensions; if (extensions != null && extensions.Count > 0) { var hostElement = extensions.FirstOrDefault(el => el.Name == "HostName"); if (hostElement != null) { hostName = hostElement.Value; // + " {" + address + "}"; } } logger.Debug(hostName); hostItems.Add(new ComboBoxItem { Name = hostName, Tag = address, }); } } } hostsComboBox.DataSource = hostItems; hostsComboBox.DisplayMember = "Name"; progress.Close(); }; discoveryClient.FindProgressChanged += (o, a) => { logger.Debug("FindProgressChanged(...) " + a.EndpointDiscoveryMetadata.Address.ToString()); }; progress.Shown += (o, a) => { discoveryClient.FindAsync(criteria, this); }; progress.FormClosed += (o, a) => { logger.Debug("FormClosed(...)"); if (discoveryClient != null) { discoveryClient.CancelAsync(this); discoveryClient.Close(); } }; progress.ShowDialog(); }
public IDiscoveryManager Start() { dis.FindAsync(Criteria, userState); return(this); }