public PeerNameResolver(string peerName, int numberOfResultsRequested, PnrpResolveCriteria resolveCriteria, uint scopeId, string cloudName, TimeSpan timeout, List<PnrpRegistration> results) : base(null, null) { // pnrp has a hard-coded limit on the timeout value that can be passed to it // maximum value is 10 minutes if (timeout > MaxTimeout) { timeout = MaxTimeout; } timeoutHelper = new TimeoutHelper(timeout); PnrpInfo resolveQueryInfo = new PnrpInfo(); resolveQueryInfo.dwSize = Marshal.SizeOf(typeof(PnrpInfo)); resolveQueryInfo.nMaxResolve = numberOfResultsRequested; resolveQueryInfo.dwTimeout = (int)timeout.TotalSeconds; resolveQueryInfo.dwLifetime = 0; resolveQueryInfo.enNameState = 0; resolveQueryInfo.lpwszIdentity = null; resolveQueryInfo.dwFlags = PNRPINFO_HINT; IPEndPoint hint = PnrpPeerResolver.GetHint(); resolveQueryInfo.enResolveCriteria = resolveCriteria; resolveQueryInfo.saHint = SOCKET_ADDRESS_SAFE.SocketAddressFromIPEndPoint(hint); resolveQuery = new WsaQuerySet(); resolveQuery.ServiceInstanceName = peerName; resolveQuery.ServiceClassId = SvcIdNameV1; resolveQuery.NameSpace = NspNamespaces.Name; resolveQuery.NSProviderId = NsProviderName; resolveQuery.Context = cloudName; resolveQuery.Blob = resolveQueryInfo; this.results = results; this.scopeId = scopeId; ActionItem.Schedule(new Action<object>(SyncEnumeration), null); }
public PeerNameResolver(string peerName, int numberOfResultsRequested, PnrpResolveCriteria resolveCriteria, TimeSpan timeout, List<PnrpRegistration> results) : this(peerName, numberOfResultsRequested, resolveCriteria, 0, GlobalCloudName, timeout, results) { }