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 }