/// <summary> /// Asynchronously calls the FindServers service. /// </summary> public virtual IAsyncResult BeginFindServers(FindServersMessage message, AsyncCallback callback, object callbackData) { try { // check for bad data. if (message == null) throw new ArgumentNullException("message"); // set the request context. SetRequestContext(RequestEncoding.Xml); // create handler. ProcessRequestAsyncResult result = new ProcessRequestAsyncResult(this, callback, callbackData, 0); return result.BeginProcessRequest(SecureChannelContext.Current, message.FindServersRequest); } catch (Exception e) { throw CreateSoapFault(message.FindServersRequest, e); } }
/// <summary> /// The operation contract for the FindServers service. /// </summary> public virtual FindServersResponseMessage FindServers(FindServersMessage request) { FindServersResponse response = null; try { // OnRequestReceived(message.FindServersRequest); SetRequestContext(RequestEncoding.Xml); response = (FindServersResponse)FindServers(request.FindServersRequest); // OnResponseSent(response); return new FindServersResponseMessage(response); } catch (Exception e) { Exception fault = CreateSoapFault(request.FindServersRequest, e); // OnResponseFaultSent(fault); throw fault; } }
/// <summary> /// The operation contract for the FindServers service. /// </summary> public virtual FindServersResponseMessage FindServers(FindServersMessage request) { try { SetRequestContext(RequestEncoding.Xml); FindServersResponse response = (FindServersResponse)FindServers(request.FindServersRequest); return new FindServersResponseMessage(response); } catch (Exception e) { throw CreateSoapFault(request.FindServersRequest, e); } }
/// <summary> /// Returns the servers known to the discovery endpoint. /// </summary> public FindServersResponseMessage FindServers(FindServersMessage request) { lock (m_lock) { // update the list of supported endpoints by looking in the service description associated with the host. InitializeApplicationDescription(); FindServersResponseMessage response = new FindServersResponseMessage(); response.ResponseHeader = CreateResponseHeader(request.RequestHeader); response.Servers = new ListOfApplicationDescription(); // only one server to return must still must check the filter if specified. bool filtered = false; if (request.ServerUris != null && request.ServerUris.Count != 0) { filtered = true; foreach (string serverUri in request.ServerUris) { if (serverUri == m_application.ApplicationUri) { filtered = false; break; } } } // return an empty list if no match on the filter. if (!filtered) { response.Servers.Add(m_application); } return response; } }