/// <summary> /// The default constructor. /// </summary> public ConfiguredEndpoint( ConfiguredEndpointCollection collection, EndpointDescription description) : this(collection, description, null) { }
/// <summary> /// The default constructor. /// </summary> public ConfiguredEndpoint( ConfiguredEndpointCollection collection, EndpointDescription description, EndpointConfiguration configuration) { if (description == null) { throw new ArgumentNullException("description"); } m_collection = collection; m_description = description; m_updateBeforeConnect = true; // ensure a default configuration. if (configuration == null) { if (collection != null) { configuration = collection.DefaultConfiguration; } else { configuration = EndpointConfiguration.Create(); } } Update(configuration); }
/// <summary> /// Loads a collection of endpoints from a stream. /// </summary> public static ConfiguredEndpointCollection Load(Stream istrm) { try { DataContractSerializer serializer = new DataContractSerializer(typeof(ConfiguredEndpointCollection)); ConfiguredEndpointCollection endpoints = serializer.ReadObject(istrm) as ConfiguredEndpointCollection; if (endpoints != null) { foreach (ConfiguredEndpoint endpoint in endpoints) { if (endpoint.Description != null) { endpoint.Description.TransportProfileUri = Profiles.NormalizeUri(endpoint.Description.TransportProfileUri); } } } return(endpoints); } catch (Exception e) { Utils.Trace(e, "Unexpected error loading ConfiguredEnpoints."); throw e; } }
/// <summary> /// Loads a collection of endpoints from a file and overrides the endpoint configuration. /// </summary> public static ConfiguredEndpointCollection Load(ApplicationConfiguration configuration, string filePath, bool overrideConfiguration) { ConfiguredEndpointCollection endpoints = Load(filePath); endpoints.m_defaultConfiguration = EndpointConfiguration.Create(configuration); // override the settings in the configuration. foreach (ConfiguredEndpoint endpoint in endpoints.Endpoints) { if (endpoint.Configuration == null || overrideConfiguration) { endpoint.Update(endpoints.DefaultConfiguration); } } return(endpoints); }
/// <summary> /// Returns a deep copy of the collection. /// </summary> public new object MemberwiseClone() { ConfiguredEndpointCollection clone = new ConfiguredEndpointCollection(); clone.m_filepath = m_filepath; clone.m_knownHosts = new StringCollection(m_knownHosts); clone.m_defaultConfiguration = (EndpointConfiguration)m_defaultConfiguration.MemberwiseClone(); foreach (ConfiguredEndpoint endpoint in m_endpoints) { ConfiguredEndpoint clonedEndpoint = (ConfiguredEndpoint)endpoint.MemberwiseClone(); clonedEndpoint.Collection = clone; clone.m_endpoints.Add(clonedEndpoint); } return(clone); }
/// <summary> /// Loads the endpoints cached on disk. /// </summary> /// <param name="createAlways">if set to <c>true</c> ConfiguredEndpointCollection is always returned, /// even if loading from disk fails</param> /// <param name="overrideConfiguration">if set to <c>true</c> overrides the configuration.</param> /// <returns> /// Colection of configured endpoints from the disk. /// </returns> public ConfiguredEndpointCollection LoadCachedEndpoints(bool createAlways, bool overrideConfiguration) { if (m_clientConfiguration == null) { throw new InvalidOperationException("Only valid for client configurations."); } string filePath = Utils.GetAbsoluteFilePath(m_clientConfiguration.EndpointCacheFilePath, true, false, false, false); if (filePath == null) { filePath = m_clientConfiguration.EndpointCacheFilePath; if (!Utils.IsPathRooted(filePath)) { FileInfo sourceFile = new FileInfo(this.SourceFilePath); filePath = Utils.Format("{0}{1}{2}", sourceFile.DirectoryName, Path.DirectorySeparatorChar, filePath); } } if (!createAlways) { return(ConfiguredEndpointCollection.Load(this, filePath, overrideConfiguration)); } ConfiguredEndpointCollection endpoints = new ConfiguredEndpointCollection(this); try { endpoints = ConfiguredEndpointCollection.Load(this, filePath, overrideConfiguration); } catch (Exception e) { Utils.Trace(e, "Could not load configuration from file: {0}", filePath); } finally { string localFilePath = Utils.GetAbsoluteFilePath(m_clientConfiguration.EndpointCacheFilePath, true, false, true, true); if (localFilePath != filePath) { endpoints.Save(localFilePath); } } return(endpoints); }
/// <summary> /// Loads the endpoints cached on disk. /// </summary> /// <param name="createAlways">if set to <c>true</c> ConfiguredEndpointCollection is always returned, /// even if loading from disk fails</param> /// <param name="overrideConfiguration">if set to <c>true</c> overrides the configuration.</param> /// <returns> /// Colection of configured endpoints from the disk. /// </returns> public ConfiguredEndpointCollection LoadCachedEndpoints(bool createAlways, bool overrideConfiguration) { #if !SILVERLIGHT if (m_clientConfiguration == null) { throw new InvalidOperationException("Only valid for client configurations."); } string filePath = Utils.GetAbsoluteFilePath(m_clientConfiguration.EndpointCacheFilePath, true, false, false); if (filePath == null) { filePath = m_clientConfiguration.EndpointCacheFilePath; if (!filePath.StartsWith("\\\\", StringComparison.Ordinal) && filePath.IndexOf(":", StringComparison.Ordinal) != 1) { FileInfo sourceFile = new FileInfo(this.SourceFilePath); filePath = Utils.Format("{0}\\{1}", sourceFile.DirectoryName, filePath); } } if (!createAlways) { return(ConfiguredEndpointCollection.Load(this, filePath, overrideConfiguration)); } try { return(ConfiguredEndpointCollection.Load(this, filePath, overrideConfiguration)); } catch (Exception e) { Utils.Trace(e, "Could not load configuration from file: {0}", filePath); ConfiguredEndpointCollection endpoints = new ConfiguredEndpointCollection(this); endpoints.Save(filePath); return(endpoints); } #else return(new ConfiguredEndpointCollection()); #endif }