public outMapPort addOutPortForJsonParse(JObject jobj) { outMapPort opm = outMapPort.parlseJson(jobj); lock (outPortList) outPortList.Add(opm); return(opm); }
public outMapPort addOutPort(string host, string port, string httpsPort, int maxCount, bool needCheckLive) { var oldop = (from x in outPortList where x.port == port && x.host == host select x).FirstOrDefault(); if (oldop != null) { return(oldop); } outMapPort opm = new outMapPort(cid, host, port, httpsPort, needCheckLive, this, -1, maxCount, this.isfromEureka); lock (outPortList) { outPortList.Add(opm); } setstatus(serverStatusEnum.Ready); return(opm); }
internal outMapPort getLoadAverageOutHostPort() { int minCount = int.MaxValue; outMapPort minopm = null; foreach (var obj in outPortList) { localRunServer.Instance.devlog.InfoFormat("status:{0},count:{1},ip:{2}", obj.status, obj.connectedCount, obj.host); if (obj.status == serverStatusEnum.Ready && (obj.maxConnected == -1 || obj.connectedCount < obj.maxConnected) && obj.connectedCount < minCount) { minCount = obj.connectedCount; minopm = obj; } } return(minopm); }
internal outMapPort getFastResponseOutHostPort() { double responseTime = int.MaxValue; outMapPort minopm = null; foreach (var obj in outPortList) { Console.WriteLine("status:{0},count:{1},ip:{2}", obj.status, obj.connectedCount, obj.host); if (obj.status == serverStatusEnum.Ready && (obj.maxConnected == -1 || obj.connectedCount < obj.maxConnected) && obj.callResponeTime < responseTime) { responseTime = obj.callResponeTime; minopm = obj; } } return(minopm); }
/// <summary> /// 监测主机是否存活 /// </summary> /// <param name="omp"></param> /// <param name="mpg"></param> /// <returns></returns> private bool checkOneMapHostOk(outMapPort omp, mapPortGroup mpg) { if (mpg.mapType == 1) { //http转发,如果设置sayEchoUrl,就使用http请求测试,否则 if (!string.IsNullOrEmpty(omp.sayEchoUrl)) { var url = string.Format("{0}://{1}:{2}/{3}", string.IsNullOrEmpty(omp.httpsPort) ? "http" : "https", omp.host, string.IsNullOrEmpty(omp.httpsPort) ? omp.port : omp.httpsPort, omp.sayEchoUrl); return(canHaveEcho(url)); } } try { Console.WriteLine("check tcp port"); var bsp = new Bootstrap(); bsp .Group(checkGroup) .Channel <TcpSocketChannel>() .Option(ChannelOption.TcpNodelay, true) .Option(ChannelOption.SoKeepalive, true) .Option(ChannelOption.ConnectTimeout, TimeSpan.FromSeconds(1)) .Handler(new ActionChannelInitializer <ISocketChannel>(c => { IChannelPipeline pipeline = c.Pipeline; })); bsp.RemoteAddress(new IPEndPoint(IPAddress.Parse(omp.host), int.Parse(omp.port))); var clientChannel = AsyncHelpers.RunSync <IChannel>(() => bsp.ConnectAsync()); AsyncHelpers.RunSync(() => clientChannel.CloseAsync()); return(true); } catch (Exception ex) { Console.WriteLine("check tcp port error:" + FrmLib.Extend.tools_static.getExceptionMessage(ex)); return(false); } }
public static outMapPort parlseJson(JObject jobj) { outMapPort omp = JsonConvert.DeserializeObject <outMapPort>(jobj.ToString()); return(omp); }