Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / Discovery / DynamicPhysicalDiscoSearcher.cs / 1305376 / DynamicPhysicalDiscoSearcher.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Services.Discovery {
using System;
using System.IO;
using System.Collections;
using System.Web;
using System.Web.Caching;
using System.Diagnostics;
using System.Text;
using System.DirectoryServices;
using System.Web.Services.Configuration;
using System.ComponentModel;
///
///
/// Does a recursive search of virtual subdirectories to find stuff to
/// make a disco file from. *.disco files (or whatever the PrimarySearchPattern is) are
/// treated as end-points - recursion stops where they are found.
///
internal class DynamicPhysicalDiscoSearcher : DynamicDiscoSearcher {
private string startDir;
internal DynamicPhysicalDiscoSearcher(string searchDir, string[] excludedUrls, string startUrl) :
base(excludedUrls)
{
startDir = searchDir;
origUrl = startUrl;
}
// -------------------------------------------------------------------------------
internal override void Search(string fileToSkipAtBegin) {
SearchInit(fileToSkipAtBegin);
ScanDirectory( startDir );
}
// -------------------------------------------------------------------------------
// Look in iven directory for subdirectories, feasable for further searching.
protected override void SearchSubDirectories(string localDir) {
DirectoryInfo dir = new DirectoryInfo(localDir);
if (!dir.Exists)
return;
DirectoryInfo[] subDirs = dir.GetDirectories();
foreach (DirectoryInfo subDir in subDirs) {
if (subDir.Name == "." || subDir.Name == ".." ) {
continue;
}
ScanDirectory( localDir + '\\' + subDir.Name );
}
}
// --------------------------------------------------------------------------------
protected override DirectoryInfo GetPhysicalDir(string dir ) {
if ( !Directory.Exists(dir) )
return null;
DirectoryInfo directory = new DirectoryInfo(dir);
if ( !directory.Exists )
return null;
if( 0 != (directory.Attributes & (FileAttributes.Hidden | FileAttributes.System | FileAttributes.Temporary))) {
return null;
}
return directory;
}
// -------------------------------------------------------------------------------
// Makes result URL found file path from diectory name and short file name.
protected override string MakeResultPath(string dirName, string fileName) {
string res = origUrl
+ dirName.Substring(startDir.Length, dirName.Length - startDir.Length).Replace('\\','/')
+ '/' + fileName;
return res;
}
// --------------------------------------------------------------------------------
// Makes exclusion path absolute for quick comparision on search.
protected override string MakeAbsExcludedPath(string pathRelativ) {
return startDir + '\\' + pathRelativ.Replace('/', '\\' );
}
// --------------------------------------------------------------------------------
protected override bool IsVirtualSearch {
get { return false; }
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Services.Discovery {
using System;
using System.IO;
using System.Collections;
using System.Web;
using System.Web.Caching;
using System.Diagnostics;
using System.Text;
using System.DirectoryServices;
using System.Web.Services.Configuration;
using System.ComponentModel;
///
///
/// Does a recursive search of virtual subdirectories to find stuff to
/// make a disco file from. *.disco files (or whatever the PrimarySearchPattern is) are
/// treated as end-points - recursion stops where they are found.
///
internal class DynamicPhysicalDiscoSearcher : DynamicDiscoSearcher {
private string startDir;
internal DynamicPhysicalDiscoSearcher(string searchDir, string[] excludedUrls, string startUrl) :
base(excludedUrls)
{
startDir = searchDir;
origUrl = startUrl;
}
// -------------------------------------------------------------------------------
internal override void Search(string fileToSkipAtBegin) {
SearchInit(fileToSkipAtBegin);
ScanDirectory( startDir );
}
// -------------------------------------------------------------------------------
// Look in iven directory for subdirectories, feasable for further searching.
protected override void SearchSubDirectories(string localDir) {
DirectoryInfo dir = new DirectoryInfo(localDir);
if (!dir.Exists)
return;
DirectoryInfo[] subDirs = dir.GetDirectories();
foreach (DirectoryInfo subDir in subDirs) {
if (subDir.Name == "." || subDir.Name == ".." ) {
continue;
}
ScanDirectory( localDir + '\\' + subDir.Name );
}
}
// --------------------------------------------------------------------------------
protected override DirectoryInfo GetPhysicalDir(string dir ) {
if ( !Directory.Exists(dir) )
return null;
DirectoryInfo directory = new DirectoryInfo(dir);
if ( !directory.Exists )
return null;
if( 0 != (directory.Attributes & (FileAttributes.Hidden | FileAttributes.System | FileAttributes.Temporary))) {
return null;
}
return directory;
}
// -------------------------------------------------------------------------------
// Makes result URL found file path from diectory name and short file name.
protected override string MakeResultPath(string dirName, string fileName) {
string res = origUrl
+ dirName.Substring(startDir.Length, dirName.Length - startDir.Length).Replace('\\','/')
+ '/' + fileName;
return res;
}
// --------------------------------------------------------------------------------
// Makes exclusion path absolute for quick comparision on search.
protected override string MakeAbsExcludedPath(string pathRelativ) {
return startDir + '\\' + pathRelativ.Replace('/', '\\' );
}
// --------------------------------------------------------------------------------
protected override bool IsVirtualSearch {
get { return false; }
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DesignTimeData.cs
- UiaCoreApi.cs
- TemplateNameScope.cs
- Grant.cs
- ProfilePropertyNameValidator.cs
- _ConnectOverlappedAsyncResult.cs
- EdmValidator.cs
- ValueUnavailableException.cs
- DoubleCollection.cs
- TemplatedMailWebEventProvider.cs
- ButtonBaseAutomationPeer.cs
- XmlSchemaChoice.cs
- WpfKnownTypeInvoker.cs
- XmlSchemaChoice.cs
- HMACSHA256.cs
- ListDataBindEventArgs.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- HiddenField.cs
- PopupEventArgs.cs
- Operator.cs
- BuildProvidersCompiler.cs
- StorageEndPropertyMapping.cs
- AndCondition.cs
- AttachedAnnotationChangedEventArgs.cs
- DataGridLinkButton.cs
- MimeTypePropertyAttribute.cs
- SqlXml.cs
- AuthenticationModulesSection.cs
- SystemTcpConnection.cs
- DbSetClause.cs
- NativeMethods.cs
- CodeTypeMember.cs
- DemultiplexingClientMessageFormatter.cs
- CallbackValidatorAttribute.cs
- FtpCachePolicyElement.cs
- Ticks.cs
- StoragePropertyMapping.cs
- Column.cs
- LayoutEvent.cs
- PageBreakRecord.cs
- UpdatePanel.cs
- SubMenuStyleCollection.cs
- CellQuery.cs
- Range.cs
- ColorIndependentAnimationStorage.cs
- EventLogLink.cs
- Invariant.cs
- UserControlBuildProvider.cs
- DiscoveryClientDocuments.cs
- StreamedFramingRequestChannel.cs
- WebBrowserNavigatingEventHandler.cs
- EntityDataSourceWrapper.cs
- COM2ExtendedUITypeEditor.cs
- Operators.cs
- HttpGetProtocolReflector.cs
- DoubleIndependentAnimationStorage.cs
- DataSvcMapFileSerializer.cs
- PnrpPeerResolverBindingElement.cs
- EventMappingSettingsCollection.cs
- ConnectionStringSettingsCollection.cs
- XamlReaderHelper.cs
- DefaultBindingPropertyAttribute.cs
- handlecollector.cs
- ConfigurationSettings.cs
- CollectionDataContractAttribute.cs
- DataGridViewComboBoxCell.cs
- XmlNode.cs
- DataBinding.cs
- RuleSettingsCollection.cs
- DelegateTypeInfo.cs
- QuaternionKeyFrameCollection.cs
- ConfigurationSectionGroup.cs
- SystemFonts.cs
- DesignerDataSourceView.cs
- BrowserTree.cs
- HtmlMeta.cs
- DemultiplexingClientMessageFormatter.cs
- DataGridViewControlCollection.cs
- PrefixHandle.cs
- CompilerInfo.cs
- QuaternionAnimation.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- RootBuilder.cs
- ObjectViewListener.cs
- IgnoreDeviceFilterElementCollection.cs
- ArraySortHelper.cs
- CharAnimationBase.cs
- HostedTransportConfigurationBase.cs
- ZipIOCentralDirectoryFileHeader.cs
- SortableBindingList.cs
- CachingHintValidation.cs
- UserControl.cs
- ItemCollection.cs
- EdmEntityTypeAttribute.cs
- XmlSchemaComplexType.cs
- StaticExtension.cs
- FixedNode.cs
- PerfCounterSection.cs
- PiiTraceSource.cs
- BookmarkEventArgs.cs