Example #1
0
        public outMapPort addOutPortForJsonParse(JObject jobj)
        {
            outMapPort opm = outMapPort.parlseJson(jobj);

            lock (outPortList)
                outPortList.Add(opm);
            return(opm);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        /// <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);
            }
        }
Example #6
0
        public static outMapPort parlseJson(JObject jobj)
        {
            outMapPort omp = JsonConvert.DeserializeObject <outMapPort>(jobj.ToString());

            return(omp);
        }