Beispiel #1
0
 /// <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();
 }
Beispiel #2
0
        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;
            }
        }
Beispiel #3
0
 /// <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()));
 }