示例#1
0
 /// <summary>Creates a new scheme.</summary>
 /// <remarks>
 /// Creates a new scheme.
 /// Whether the created scheme allows for layered connections
 /// depends on the class of <code>factory</code>.
 /// </remarks>
 /// <param name="name">
 /// the scheme name, for example "http".
 /// The name will be converted to lowercase.
 /// </param>
 /// <param name="port">the default port for this scheme</param>
 /// <param name="factory">
 /// the factory for creating sockets for communication
 /// with this scheme
 /// </param>
 /// <since>4.1</since>
 public Scheme(string name, int port, SchemeSocketFactory factory)
 {
     Args.NotNull(name, "Scheme name");
     Args.Check(port > 0 && port <= unchecked ((int)(0xffff)), "Port is invalid");
     Args.NotNull(factory, "Socket factory");
     this.name        = name.ToLower(Sharpen.Extensions.GetEnglishCulture());
     this.defaultPort = port;
     if (factory is SchemeLayeredSocketFactory)
     {
         this.layered       = true;
         this.socketFactory = factory;
     }
     else
     {
         if (factory is LayeredSchemeSocketFactory)
         {
             this.layered       = true;
             this.socketFactory = new SchemeLayeredSocketFactoryAdaptor2((LayeredSchemeSocketFactory
                                                                          )factory);
         }
         else
         {
             this.layered       = false;
             this.socketFactory = factory;
         }
     }
 }
 internal SocketFactoryAdaptor(SchemeSocketFactory factory) : base()
 {
     this.factory = factory;
 }