Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / PipelineDeploymentState.cs / 1305376 / PipelineDeploymentState.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: PipelineDeploymentState ** ** Purpose: Represents all the add-in pipeline components ** in a directory structure. ** ===========================================================*/ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.IO; using System.Text; using System.Reflection; using System.AddIn.MiniReflection; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { [Serializable] internal sealed class PipelineDeploymentState : DeploymentState { private List_hostAdapters; private List _contracts; private List _addinAdapters; private List _addinBases; private List _partialTokens; private List _fileCounts; internal PipelineDeploymentState() { _hostAdapters = new List (); _contracts = new List (); _addinAdapters = new List (); _addinBases = new List (); _fileCounts = new List (new int[]{0,0,0,0}); } internal List HostAdapters { get { return _hostAdapters; } } internal List Contracts { get { return _contracts; } } internal List AddInAdapters { get { return _addinAdapters; } } internal List AddInBases { get { return _addinBases; } } internal List PartialTokens { get { return _partialTokens; } } internal List FileCounts { get { return _fileCounts; } } internal void ConnectPipeline(Collection warnings) { List result = new List (); // For ease of maintanence & debugging for users of the add-in // model, we must make it easy to report which parts are not // usable, due to missing connections with other parts of the // pipeline. // Real connect loop. foreach (HostAdapter hostAdapter in HostAdapters) { foreach (ContractComponent contract in Contracts) { if (!hostAdapter.Constructors.Contains(contract.TypeInfo)) continue; hostAdapter.ConnectedToNeighbors = true; foreach (AddInAdapter addinAdapter in AddInAdapters) { if (!addinAdapter.Contracts.Contains(contract.TypeInfo)) continue; contract.ConnectedToNeighbors = true; foreach (AddInBase addinBase in AddInBases) { if (!addinAdapter.CanConnectTo(addinBase)) continue; addinAdapter.ConnectedToNeighbors = true; addinBase.ConnectedToNeighbors = true; PartialToken partialToken = new PartialToken(hostAdapter, contract, addinAdapter, addinBase); result.Add(partialToken); } // foreach addinBase } // foreach addinAdapter } // foreach contract } // foreach hostAdapter // Look for unconnected parts. int unconnectedParts = 0; unconnectedParts += LookForUnconnectedParts(HostAdapters, warnings); unconnectedParts += LookForUnconnectedParts(Contracts, warnings); unconnectedParts += LookForUnconnectedParts(AddInAdapters, warnings); unconnectedParts += LookForUnconnectedParts(AddInBases, warnings); #if ADDIN_VERBOSE_WARNINGS warnings.Add(String.Format(CultureInfo.CurrentCulture, "PipelineDeploymentState::Connect: Found {0} valid pipelines.", result.Count)); #endif if (unconnectedParts > 0) warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.CouldntConnectNInvalidParts, unconnectedParts)); _partialTokens = result; } private static int LookForUnconnectedParts (IEnumerable parts, Collection warnings) where T : PipelineComponent { int numUnconnected = 0; foreach (PipelineComponent part in parts) { if (!part.ConnectedToNeighbors) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.CouldntConnectOnePart, part.ToString())); numUnconnected++; } } return numUnconnected; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: PipelineDeploymentState ** ** Purpose: Represents all the add-in pipeline components ** in a directory structure. ** ===========================================================*/ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.IO; using System.Text; using System.Reflection; using System.AddIn.MiniReflection; using System.Diagnostics.Contracts; namespace System.AddIn.Hosting { [Serializable] internal sealed class PipelineDeploymentState : DeploymentState { private List _hostAdapters; private List _contracts; private List _addinAdapters; private List _addinBases; private List _partialTokens; private List _fileCounts; internal PipelineDeploymentState() { _hostAdapters = new List (); _contracts = new List (); _addinAdapters = new List (); _addinBases = new List (); _fileCounts = new List (new int[]{0,0,0,0}); } internal List HostAdapters { get { return _hostAdapters; } } internal List Contracts { get { return _contracts; } } internal List AddInAdapters { get { return _addinAdapters; } } internal List AddInBases { get { return _addinBases; } } internal List PartialTokens { get { return _partialTokens; } } internal List FileCounts { get { return _fileCounts; } } internal void ConnectPipeline(Collection warnings) { List result = new List (); // For ease of maintanence & debugging for users of the add-in // model, we must make it easy to report which parts are not // usable, due to missing connections with other parts of the // pipeline. // Real connect loop. foreach (HostAdapter hostAdapter in HostAdapters) { foreach (ContractComponent contract in Contracts) { if (!hostAdapter.Constructors.Contains(contract.TypeInfo)) continue; hostAdapter.ConnectedToNeighbors = true; foreach (AddInAdapter addinAdapter in AddInAdapters) { if (!addinAdapter.Contracts.Contains(contract.TypeInfo)) continue; contract.ConnectedToNeighbors = true; foreach (AddInBase addinBase in AddInBases) { if (!addinAdapter.CanConnectTo(addinBase)) continue; addinAdapter.ConnectedToNeighbors = true; addinBase.ConnectedToNeighbors = true; PartialToken partialToken = new PartialToken(hostAdapter, contract, addinAdapter, addinBase); result.Add(partialToken); } // foreach addinBase } // foreach addinAdapter } // foreach contract } // foreach hostAdapter // Look for unconnected parts. int unconnectedParts = 0; unconnectedParts += LookForUnconnectedParts(HostAdapters, warnings); unconnectedParts += LookForUnconnectedParts(Contracts, warnings); unconnectedParts += LookForUnconnectedParts(AddInAdapters, warnings); unconnectedParts += LookForUnconnectedParts(AddInBases, warnings); #if ADDIN_VERBOSE_WARNINGS warnings.Add(String.Format(CultureInfo.CurrentCulture, "PipelineDeploymentState::Connect: Found {0} valid pipelines.", result.Count)); #endif if (unconnectedParts > 0) warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.CouldntConnectNInvalidParts, unconnectedParts)); _partialTokens = result; } private static int LookForUnconnectedParts (IEnumerable parts, Collection warnings) where T : PipelineComponent { int numUnconnected = 0; foreach (PipelineComponent part in parts) { if (!part.ConnectedToNeighbors) { warnings.Add(String.Format(CultureInfo.CurrentCulture, Res.CouldntConnectOnePart, part.ToString())); numUnconnected++; } } return numUnconnected; } } } // 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
- TypeBuilderInstantiation.cs
- XPathSelectionIterator.cs
- Highlights.cs
- PrePrepareMethodAttribute.cs
- NullReferenceException.cs
- LinkLabel.cs
- PreviewControlDesigner.cs
- WindowsEditBoxRange.cs
- FormView.cs
- Helper.cs
- GeneralTransform2DTo3DTo2D.cs
- SwitchElementsCollection.cs
- ImpersonationContext.cs
- DescriptionAttribute.cs
- CodeCompiler.cs
- FontWeight.cs
- ClientRequest.cs
- HttpListenerTimeoutManager.cs
- CornerRadius.cs
- figurelengthconverter.cs
- SingleAnimationBase.cs
- EventsTab.cs
- DataGridItemCollection.cs
- XPathArrayIterator.cs
- TypeResolvingOptionsAttribute.cs
- Grant.cs
- XmlLangPropertyAttribute.cs
- RequestQueue.cs
- KnownTypesHelper.cs
- TextComposition.cs
- XmlDocument.cs
- VirtualPath.cs
- CheckBox.cs
- NameSpaceEvent.cs
- ForeignConstraint.cs
- AmbiguousMatchException.cs
- TopClause.cs
- Triplet.cs
- Variable.cs
- SpellCheck.cs
- GridViewEditEventArgs.cs
- CollectionBase.cs
- TextControlDesigner.cs
- OdbcParameterCollection.cs
- BehaviorEditorPart.cs
- PageVisual.cs
- LongCountAggregationOperator.cs
- OutputCacheSettings.cs
- AdCreatedEventArgs.cs
- DecoratedNameAttribute.cs
- NetworkStream.cs
- TextTreeRootNode.cs
- DBDataPermission.cs
- CompoundFileStreamReference.cs
- BooleanAnimationUsingKeyFrames.cs
- ProfileService.cs
- BuildProvider.cs
- Lease.cs
- KnownBoxes.cs
- XamlNamespaceHelper.cs
- EntitySet.cs
- LinkArea.cs
- CommentAction.cs
- BaseTemplateBuildProvider.cs
- ApplySecurityAndSendAsyncResult.cs
- RtfToXamlReader.cs
- PropertyDescriptorCollection.cs
- BCryptSafeHandles.cs
- XmlNodeComparer.cs
- BufferManager.cs
- Point3DAnimationBase.cs
- Tablet.cs
- UICuesEvent.cs
- BitmapSizeOptions.cs
- ReversePositionQuery.cs
- TripleDES.cs
- ProxyBuilder.cs
- CallContext.cs
- IdentitySection.cs
- SafeSecurityHandles.cs
- Wrapper.cs
- ConfigurationManagerHelper.cs
- ObjectDataSourceDisposingEventArgs.cs
- FunctionMappingTranslator.cs
- AssemblyBuilder.cs
- MatrixTransform.cs
- ConfigurationSchemaErrors.cs
- SerializationFieldInfo.cs
- AsyncCodeActivity.cs
- WorkflowClientDeliverMessageWrapper.cs
- WebZoneDesigner.cs
- CheckBoxList.cs
- SmtpNetworkElement.cs
- UIElementParagraph.cs
- ProgressBarHighlightConverter.cs
- BitmapDecoder.cs
- NumberFormatter.cs
- DataGridView.cs
- ConnectionConsumerAttribute.cs
- CqlIdentifiers.cs