Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Description / ConfigWriter.cs / 1 / ConfigWriter.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Description { using System; using System.ServiceModel.Channels; using System.Configuration; using System.Collections.Generic; using System.ServiceModel; using System.ServiceModel.Configuration; using System.ServiceModel.Diagnostics; internal class ConfigWriter { readonly DictionarybindingTable; readonly BindingsSection bindingsSection; readonly ChannelEndpointElementCollection channels; readonly Configuration config; internal ConfigWriter(Configuration configuration) { this.bindingTable = new Dictionary (); this.bindingsSection = BindingsSection.GetSection(configuration); ServiceModelSectionGroup serviceModelSectionGroup = ServiceModelSectionGroup.GetSectionGroup(configuration); this.channels = serviceModelSectionGroup.Client.Endpoints; this.config = configuration; } internal ChannelEndpointElement WriteChannelDescription(ServiceEndpoint endpoint, string typeName) { ChannelEndpointElement channelElement = null; // Create Binding BindingDictionaryValue bindingDV = CreateBindingConfig(endpoint.Binding); channelElement = new ChannelEndpointElement(endpoint.Address, typeName); // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",") channelElement.Name = NamingHelper.GetUniqueName(NamingHelper.CodeName(endpoint.Name), this.CheckIfChannelNameInUse, null); channelElement.BindingConfiguration = bindingDV.BindingName; channelElement.Binding = bindingDV.BindingSectionName; channels.Add(channelElement); return channelElement; } internal void WriteBinding(Binding binding, out string bindingSectionName, out string configurationName) { BindingDictionaryValue result = CreateBindingConfig(binding); configurationName = result.BindingName; bindingSectionName = result.BindingSectionName; } BindingDictionaryValue CreateBindingConfig(Binding binding) { BindingDictionaryValue bindingDV; if (!bindingTable.TryGetValue(binding, out bindingDV)) { // [....]: review: Use decoded form to preserve the user-given friendly name, however, beacuse our Encoding algorithm // does not touch ASCII names, a name that looks like encoded name will not roundtrip(Example: "_x002C_" will turned into ",") string bindingName = NamingHelper.GetUniqueName(NamingHelper.CodeName(binding.Name), this.CheckIfBindingNameInUse, null); string bindingSectionName; if (!BindingsSection.TryAdd(bindingName, binding, config, out bindingSectionName)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.ConfigBindingCannotBeConfigured), "endpoint.Binding")); bindingDV = new BindingDictionaryValue(bindingName, bindingSectionName); bindingTable.Add(binding, bindingDV); } return bindingDV; } bool CheckIfBindingNameInUse(string name, object nameCollection) { foreach (BindingCollectionElement bindingCollectionElement in this.bindingsSection.BindingCollections) if (bindingCollectionElement.ContainsKey(name)) return true; return false; } bool CheckIfChannelNameInUse(string name, object namingCollection) { foreach (ChannelEndpointElement element in this.channels) if (element.Name == name) return true; return false; } sealed class BindingDictionaryValue { public readonly string BindingName; public readonly string BindingSectionName; public BindingDictionaryValue(string bindingName, string bindingSectionName) { this.BindingName = bindingName; this.BindingSectionName = bindingSectionName; } } } } // 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
- SessionStateSection.cs
- FakeModelItemImpl.cs
- InfocardClientCredentials.cs
- TraceProvider.cs
- AssemblyBuilder.cs
- ExpressionVisitor.cs
- System.Data_BID.cs
- BindingListCollectionView.cs
- StaticSiteMapProvider.cs
- WebBrowserNavigatedEventHandler.cs
- XmlNavigatorFilter.cs
- WhitespaceReader.cs
- MethodBuilderInstantiation.cs
- Function.cs
- RegistryKey.cs
- MemberRelationshipService.cs
- NativeMethodsCLR.cs
- Serializer.cs
- DocumentAutomationPeer.cs
- DataTableTypeConverter.cs
- WebPartEditorOkVerb.cs
- TemplateControlCodeDomTreeGenerator.cs
- ReflectEventDescriptor.cs
- PolicyStatement.cs
- FontStyles.cs
- SiteMapNode.cs
- MimeTypeMapper.cs
- DataGridViewUtilities.cs
- StoryFragments.cs
- XmlILStorageConverter.cs
- TrackBarRenderer.cs
- ListBox.cs
- PreservationFileWriter.cs
- MruCache.cs
- LinkButton.cs
- CodeTypeDeclarationCollection.cs
- AutomationPatternInfo.cs
- GeometryHitTestResult.cs
- ObjectManager.cs
- TableLayoutStyleCollection.cs
- COM2AboutBoxPropertyDescriptor.cs
- SessionSwitchEventArgs.cs
- ApplicationTrust.cs
- DiagnosticTraceSource.cs
- MessageQueueEnumerator.cs
- SecurityPermission.cs
- ColorConverter.cs
- DBConnectionString.cs
- FixedSOMImage.cs
- IdnMapping.cs
- RequestQueue.cs
- UInt64Converter.cs
- WinEventHandler.cs
- SimpleHandlerFactory.cs
- ClickablePoint.cs
- StylusPointPropertyId.cs
- BinaryNode.cs
- XmlTextReaderImpl.cs
- ScopeCollection.cs
- TreeViewHitTestInfo.cs
- ScriptManager.cs
- ManagedCodeMarkers.cs
- altserialization.cs
- UnsafeNativeMethods.cs
- ExtentJoinTreeNode.cs
- ToolStripItemImageRenderEventArgs.cs
- LoadGrammarCompletedEventArgs.cs
- Socket.cs
- ZipIOModeEnforcingStream.cs
- FloaterBaseParaClient.cs
- mda.cs
- Vector3D.cs
- RemoteWebConfigurationHost.cs
- StringToken.cs
- DBSqlParserTable.cs
- PathHelper.cs
- SqlDataSource.cs
- MDIWindowDialog.cs
- Image.cs
- GlobalEventManager.cs
- ConnectionPoint.cs
- CellTreeNode.cs
- WindowsTooltip.cs
- ProtocolsSection.cs
- ConfigurationManagerHelper.cs
- ListCollectionView.cs
- ObjectDataSourceStatusEventArgs.cs
- AndCondition.cs
- PrivilegeNotHeldException.cs
- Positioning.cs
- DbDeleteCommandTree.cs
- WmpBitmapDecoder.cs
- webeventbuffer.cs
- SmiContextFactory.cs
- ProviderUtil.cs
- Point4DConverter.cs
- CodeParameterDeclarationExpressionCollection.cs
- querybuilder.cs
- NameValueSectionHandler.cs
- XmlWriterSettings.cs