public CNetwork()
 {
     this.m_oSocket        = null;
     this.m_oProcess       = null;
     this.m_oLogger        = null;
     this.m_dwSendBuffSize = 0u;
     this.m_dwRecvBuffSize = 0u;
 }
Esempio n. 2
0
        public bool AddProgress(INetProcess progress)
        {
            if (StableNetImage != null && progress.RunningAccuracy < accuracy_chain.First?.Value)
            {
                accuracy_chain.AddLast(progress.RunningAccuracy);

                double prv_accuracy     = 0;
                int    descenting_count = 0;
                foreach (var acc in accuracy_chain)
                {
                    if (prv_accuracy < acc)
                    {
                        descenting_count = 0;
                    }
                    else
                    {
                        descenting_count++;
                    }
                    prv_accuracy = acc;
                }

                if (descenting_count >= 4 || accuracy_chain.Count > 10)
                {
                    accuracy_chain.Clear();
                    StableNetImage = new NetProcessImage(StableNetImage.Image, -1);
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                bool is_stable;
                if (StableNetImage == null || accuracy_chain.Count > 0)
                {
                    accuracy_chain.Clear();
                    accuracy_chain.AddLast(progress.RunningAccuracy);
                    is_stable = false;
                }
                else
                {
                    is_stable = true;
                }

                StableNetImage = new NetProcessImage(
                    progress.RunningChistaNet.Image(), progress.RunningAccuracy);

                return(is_stable);
            }
        }
 /// <summary>
 /// 初始化Network
 /// </summary>
 /// <param name="oProc"></param>
 /// <param name="oBreaker"></param>
 /// <param name="dwSendBuffSize">发送缓存数组</param>
 /// <param name="dwRecvBuffSize">接收缓存数组</param>
 /// <param name="strLogDir">network.log的目录</param>
 /// <param name="bLogEnabled">是否启动log</param>
 /// <returns></returns>
 public bool Init(INetProcess oProc, IPacketBreaker oBreaker, uint dwSendBuffSize, uint dwRecvBuffSize, string strLogDir, bool bLogEnabled)
 {
     this.m_oProcess       = oProc;
     this.m_oBreaker       = oBreaker;
     this.m_dwSendBuffSize = dwSendBuffSize;
     this.m_dwRecvBuffSize = dwRecvBuffSize;
     this.m_PieceBufferIO  = new PieceBufferIO();
     this.m_oDataQueue     = new Queue();
     this.m_oLogger        = new CNetLogger(strLogDir, bLogEnabled);
     this.m_oLogger.LogInfo("-----------------------------");
     this.m_oLogger.LogInfo("Init network succ");
     return(true);
 }