/// <summary> /// /// </summary> public ConnectionPool(SocketSetting setting, EndPoint endPoint, Func <SocketSetting, EndPoint, Connection> connectionInit) { this.setting = setting; this.endPoint = endPoint; this.pools = new List <ConnectionItem[]>(); this.groups = new ConcurrentQueue <RangeTuple <int, int> >(); this.connectionInit = connectionInit; this.Extend(); }
public BinaryCached(EndPoint[] servers, Encoding responseEncoding, ICompressProtocol compress, SocketSetting setting) : base(compress) { this.servers = servers; this.responseEncoding = responseEncoding; this.compress = compress; this.connectionPools = new ConnectionPool[servers.Length]; for (var i = 0; i < servers.Length; i++) { var connectionPool = new ConnectionPool(setting, servers[i], (set, end) => { var client = new Sockets.ClientSocket(set, end); client.Start().KeepAlive(set.KeepAlivePeriod); return(client.Connection); }); this.connectionPools[i] = connectionPool; } }
/// <summary> /// 创建二进制协议的client /// </summary> /// <param name="servers"></param> /// <param name="encoding"></param> /// <param name="setting"></param> /// <returns></returns> public static MemcachedClient CreateBinaryCached(string[] servers, Encoding encoding, ICompressProtocol compress, SocketSetting setting) { return(new BinaryCached(servers.Select(ta => Parse(ta)).ToArray(), encoding, compress, setting ?? new SocketSetting())); }