Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / AppModel / SiteOfOriginPart.cs / 2 / SiteOfOriginPart.cs
//------------------------------------------------------------------------------ // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: // SiteOfOriginPart is an implementation of the abstract PackagePart class. It contains an override for GetStreamCore. // // History: // 6/16/2005: [....] - Initial creation. // //----------------------------------------------------------------------------- using System; using System.Net; using System.IO.Packaging; using System.Windows; using System.Windows.Navigation; using System.Windows.Resources; using System.IO; using System.Resources; using System.Globalization; using MS.Internal.PresentationCore; namespace MS.Internal.AppModel { ////// SiteOfOriginPart is an implementation of the abstract PackagePart class. It contains an override for GetStreamCore. /// internal class SiteOfOriginPart : System.IO.Packaging.PackagePart { //----------------------------------------------------- // // Public Constructors // //----------------------------------------------------- #region Public Constructors internal SiteOfOriginPart(Package container, Uri uri) : base(container, uri) { } #endregion //------------------------------------------------------ // // Protected Methods // //----------------------------------------------------- #region Protected Methods protected override Stream GetStreamCore(FileMode mode, FileAccess access) { #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": SiteOfOriginPart: Getting stream."); #endif return GetStreamAndSetContentType(false); } protected override string GetContentTypeCore() { #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": SiteOfOriginPart: Getting content type."); #endif GetStreamAndSetContentType(true); return _contentType.ToString(); } #endregion //------------------------------------------------------ // // Private Methods // //------------------------------------------------------ #region Private Methods private Stream GetStreamAndSetContentType(bool onlyNeedContentType) { lock (_globalLock) { if (onlyNeedContentType && _contentType != MS.Internal.ContentType.Empty) { #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": SiteOfOriginPart: Getting content type and using previously determined value"); #endif return null; } // If GetContentTypeCore is called before GetStream() // then we need to retrieve the stream to get the mime type. // That stream is then stored as _cacheStream and returned // the next time GetStreamCore() is called. if (_cacheStream != null) { #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + "SiteOfOriginPart: Using Cached stream"); #endif Stream temp = _cacheStream; _cacheStream = null; return temp; } if (_absoluteLocation == null) { #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": SiteOfOriginPart: Determining absolute uri for this resource"); #endif string original = Uri.ToString(); Invariant.Assert(original[0] == '/'); string uriMinusInitialSlash = original.Substring(1); // trim leading '/' _absoluteLocation = new Uri(SiteOfOriginContainer.SiteOfOrigin, uriMinusInitialSlash); } #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": SiteOfOriginPart: Making web request to " + _absoluteLocation); #endif // For performance reasons it is better to open local files directly // rather than make a FileWebRequest. Stream responseStream; if (SecurityHelper.AreStringTypesEqual(_absoluteLocation.Scheme, Uri.UriSchemeFile)) { responseStream = HandleFileSource(onlyNeedContentType); } else { responseStream = HandleWebSource(onlyNeedContentType); } return responseStream; } } private Stream HandleFileSource(bool onlyNeedContentType) { #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": Opening local file " + _absoluteLocation); #endif if (_contentType == MS.Internal.ContentType.Empty) { _contentType = MS.Internal.MimeTypeMapper.GetMimeTypeFromUri(Uri); } if (!onlyNeedContentType) { return File.OpenRead(_absoluteLocation.LocalPath); } return null; } private Stream HandleWebSource(bool onlyNeedContentType) { WebResponse response = WpfWebRequestHelper.CreateRequestAndGetResponse(_absoluteLocation); Stream responseStream = response.GetResponseStream(); #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": Successfully retrieved stream from " + _absoluteLocation); #endif if (_contentType == MS.Internal.ContentType.Empty) { #if DEBUG if (SiteOfOriginContainer._traceSwitch.Enabled) System.Diagnostics.Trace.TraceInformation( DateTime.Now.ToLongTimeString() + " " + DateTime.Now.Millisecond + " " + System.Threading.Thread.CurrentThread.ManagedThreadId + ": SiteOfOriginPart: Setting _contentType"); #endif _contentType = WpfWebRequestHelper.GetContentType(response); } if (onlyNeedContentType) { _cacheStream = responseStream; } return responseStream; } #endregion //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Members Uri _absoluteLocation = null; ContentType _contentType = MS.Internal.ContentType.Empty; Stream _cacheStream = null; private Object _globalLock = new Object(); #endregion Private Members } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MeasurementDCInfo.cs
- basemetadatamappingvisitor.cs
- Debug.cs
- RootBuilder.cs
- GroupByExpressionRewriter.cs
- HtmlGenericControl.cs
- cryptoapiTransform.cs
- RijndaelCryptoServiceProvider.cs
- WinFormsComponentEditor.cs
- XPathBuilder.cs
- HighlightVisual.cs
- WebPartZoneBase.cs
- Parameter.cs
- StreamWriter.cs
- SizeLimitedCache.cs
- PermissionListSet.cs
- SHA512.cs
- WebDisplayNameAttribute.cs
- TimelineGroup.cs
- SignatureHelper.cs
- CompilationSection.cs
- TopClause.cs
- Label.cs
- StateFinalizationActivity.cs
- DataGridViewTextBoxCell.cs
- HashRepartitionStream.cs
- EntityDataSourceWizardForm.cs
- ClientCredentialsElement.cs
- GeometryGroup.cs
- WarningException.cs
- NonClientArea.cs
- EncodingStreamWrapper.cs
- GenericXmlSecurityToken.cs
- WhitespaceRuleLookup.cs
- TrustManagerPromptUI.cs
- LinqDataSourceValidationException.cs
- SmtpAuthenticationManager.cs
- ShaderRenderModeValidation.cs
- ZoneMembershipCondition.cs
- CodeDomExtensionMethods.cs
- DynamicPropertyHolder.cs
- NGCSerializationManagerAsync.cs
- HtmlFormAdapter.cs
- KeyInfo.cs
- EventRoute.cs
- CompoundFileStreamReference.cs
- XmlReflectionMember.cs
- DoWorkEventArgs.cs
- ContractSearchPattern.cs
- WebPart.cs
- EntityRecordInfo.cs
- GatewayDefinition.cs
- TransformerConfigurationWizardBase.cs
- CodeGenerator.cs
- FocusWithinProperty.cs
- ScriptControl.cs
- XmlName.cs
- SByteConverter.cs
- Comparer.cs
- DockAndAnchorLayout.cs
- SegmentInfo.cs
- FixedSOMGroup.cs
- BufferedWebEventProvider.cs
- EmbossBitmapEffect.cs
- SqlServices.cs
- HttpDebugHandler.cs
- ObjectDataSourceSelectingEventArgs.cs
- TraceHwndHost.cs
- SimpleType.cs
- RegexNode.cs
- CodeDOMProvider.cs
- ContainerTracking.cs
- SelectionChangedEventArgs.cs
- ParseChildrenAsPropertiesAttribute.cs
- WebPartActionVerb.cs
- SafeFileMapViewHandle.cs
- RootBuilder.cs
- AsyncCompletedEventArgs.cs
- PrintingPermissionAttribute.cs
- Model3D.cs
- SingleResultAttribute.cs
- CurrencyWrapper.cs
- CounterCreationData.cs
- _OSSOCK.cs
- SqlRowUpdatingEvent.cs
- TraceLevelStore.cs
- PhysicalAddress.cs
- Bits.cs
- GlobalizationAssembly.cs
- ProxySimple.cs
- CompilerError.cs
- QuotedPrintableStream.cs
- TemplateControlParser.cs
- SequenceDesignerAccessibleObject.cs
- TextElementEnumerator.cs
- ScriptHandlerFactory.cs
- LightweightCodeGenerator.cs
- SemanticResultValue.cs
- InkPresenterAutomationPeer.cs
- PolicyImporterElement.cs