예제 #1
0
        public static void WriteScopes(DiscoveryVersion discoveryVersion, Collection <Uri> scopes, Uri scopeMatchBy, XmlWriter writer)
        {
            bool writeScopes = true;

            if (scopes == null || scopes.Count == 0)
            {
                // If there are no scopes defined, we write the Scopes section only if matchBy contract is None.
                writeScopes = (scopeMatchBy == FindCriteria.ScopeMatchByNone);
            }

            if (writeScopes)
            {
                writer.WriteStartElement(ProtocolStrings.SchemaNames.ScopesElement, discoveryVersion.Namespace);
                if (scopeMatchBy != null)
                {
                    Uri versionDependentScopeMatchBy = discoveryVersion.Implementation.ToVersionDependentScopeMatchBy(scopeMatchBy);
                    writer.WriteAttributeString(
                        ProtocolStrings.SchemaNames.MatchByAttribute,
                        string.Empty,
                        versionDependentScopeMatchBy.GetComponents(UriComponents.SerializationInfoString, UriFormat.UriEscaped));
                }

                if (scopes != null)
                {
                    SerializationUtility.WriteListOfUris(writer, scopes);
                }

                writer.WriteEndElement();
            }
        }
예제 #2
0
 public static void WriteListenUris(DiscoveryVersion discoveryVersion, Collection <Uri> listenUris, XmlWriter writer)
 {
     if ((listenUris != null) && (listenUris.Count > 0))
     {
         writer.WriteStartElement(ProtocolStrings.SchemaNames.XAddrsElement, discoveryVersion.Namespace);
         SerializationUtility.WriteListOfUris(writer, listenUris);
         writer.WriteEndElement();
     }
 }