示例#1
0
        public void RegisterSaslClientFactory(ISaslClientFactory saslClientFactory)
        {
            if (saslClientFactory == null)
            {
                throw new ArgumentNullException(nameof(saslClientFactory));
            }

            var mechanisms = saslClientFactory.SupportedMechanisms;

            if (mechanisms.IsEmpty())
            {
                throw new ArgumentException("A SASL Client Factory must support at least one mechanism.", nameof(saslClientFactory));
            }

            foreach (var mechanism in mechanisms)
            {
                var factoryInDict = _saslClientFactories.GetOrAdd(mechanism, saslClientFactory);
                if (factoryInDict != saslClientFactory)
                {
                    var typeName = factoryInDict.GetType().Name;
                    var msg      = $"There is already a SASL Client Factory registered for '{mechanism}': {typeName}";
                    throw new InvalidOperationException(msg);
                }
            }
        }
示例#2
0
 public static void RegisterClientFactory(ISaslClientFactory factory)
 {
     lock ( _clientFactories )
     {
         _clientFactories.Add(factory);
     }
 }
示例#3
0
 public static void RegisterClientFactory(ISaslClientFactory factory)
 {
    lock ( _clientFactories )
    {
       _clientFactories.Add(factory);
    }
 }
示例#4
0
        public static ISaslClient CreateClient(
            string[] mechanisms, string authorizationId,
            string protocol, string serverName,
            IDictionary props, ISaslCallbackHandler handler
            )
        {
            ISaslClientFactory factory = FindFactory(mechanisms, props);

            if (factory == null)
            {
                return(null);
            }

            return(factory.CreateClient(
                       mechanisms, authorizationId,
                       protocol, serverName, props, handler
                       ));
        }