1 /*
2  * Collie - An asynchronous event-driven network framework using Dlang development
3  *
4  * Copyright (C) 2015-2017  Shanghai Putao Technology Co., Ltd 
5  *
6  * Developer: putao's Dlang team
7  *
8  * Licensed under the Apache-2.0 License.
9  *
10  */
11 module collie.net.client.linklogInfo;
12 
13 import std.socket;
14 import kiss.net.TcpStream;
15 
16 struct TLinklogInfo(TCallBack) if(is(TCallBack == delegate))
17 {
18 	TcpStream client;
19 	Address addr;
20 	uint tryCount = 0;
21 	TCallBack cback;
22 
23 private:
24 	TLinklogInfo!(TCallBack) * prev;
25 	TLinklogInfo!(TCallBack) * next;
26 }
27 
28 struct TLinkManger(TCallBack) if(is(TCallBack == delegate))
29 {
30 	alias LinklogInfo = TLinklogInfo!TCallBack;
31 
32 	void addlogInfo(LinklogInfo * logInfo)
33 	{
34 		if(logInfo){
35 			logInfo.next = _logInfo.next;
36 			if(logInfo.next){
37 				logInfo.next.prev = logInfo;
38 			}
39 			logInfo.prev = &_logInfo;
40 			_logInfo.next = logInfo;
41 		}
42 	}
43 
44 	void rmlogInfo(LinklogInfo * logInfo)
45 	{
46 		logInfo.prev.next = logInfo.next;
47 		if (logInfo.next)
48 			logInfo.next.prev = logInfo.prev;
49 		logInfo.next = null;
50 		logInfo.prev = null;
51 	}
52 
53 private:
54 	LinklogInfo _logInfo;
55 }