/// <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; }