/// <summary> /// 增加一个客户端 /// </summary> /// <param name="T">客户端索引类型</param> /// <param name="accessToken">客户端的AccessToken</param> /// <param name="refreshToken">客户端的RefreshToken</param> public void AddClient(Tkey T, string accessToken, string refreshToken = "") { YfyClient client; if (refreshToken == "") { client = new YfyClient(new YfyClientConfig(accessToken, this.HttpConfig)); } else { client = new YfyClient(new YfyClientConfig(accessToken, refreshToken, this.HttpConfig)); } this.AddClient(T, client); }
/// <summary> /// 增加一个客户端 /// </summary> /// <param name="T">客户端索引类型</param> /// <param name="client">待增加的客户端</param> public void AddClient(Tkey T, YfyClient client) { var items = new LRUItems <Tkey, YfyClient>(T, client); var node = new LinkedListNode <LRUItems <Tkey, YfyClient> >(items); lock (_locker) { if (LRUList.Count >= MaxCapacity) { this.RemoveFirst(); } LRUList.AddLast(node); YfyClients.Add(T, node); } }
/// <summary> /// 根据给出的key,尝试得到相应的客户端 /// </summary> /// <param name="T">客户端索引类型</param> /// <param name="client">得到的客户端</param> /// <returns>是否成功</returns> public bool TryGetClient(Tkey T, out YfyClient client) { LinkedListNode <LRUItems <Tkey, YfyClient> > node; var result = YfyClients.TryGetValue(T, out node); if (result) { lock (_locker) { //LRU cache LRUList.Remove(node); LRUList.AddLast(node); } client = node.Value.Value; } else { client = null; } return(result); }