Пример #1
0
        /// <summary>
        /// 检测缓存是否存在
        /// </summary>
        /// <param name="value">日志信息</param>
        /// <param name="isQueue">是否缓存队列</param>
        /// <returns>是否继续输出日志</returns>
        private bool checkCache(debug value, bool isQueue)
        {
            hashString key = value.ToString();

            if (isQueue)
            {
                Monitor.Enter(cacheLock);
                try
                {
                    if (cache.Get(key, false))
                    {
                        return(false);
                    }
                    cache.Set(key, true);
                    if (cache.Count > maxCacheCount)
                    {
                        cache.UnsafePopValue();
                    }
                }
                finally { Monitor.Exit(cacheLock); }
                return(true);
            }
            if (key.Equals(lastCache))
            {
                return(false);
            }
            lastCache = key;
            return(true);
        }
Пример #2
0
 /// <summary>
 /// 添加日志
 /// </summary>
 /// <param name="error">错误异常</param>
 /// <param name="message">提示信息</param>
 /// <param name="cache">缓存类型</param>
 public void Add(Exception error, string message, cacheType cache)
 {
     if (error != null && error.Message.StartsWith(ExceptionPrefix, StringComparison.Ordinal))
     {
         error = null;
     }
     if (error == null)
     {
         if (message != null)
         {
             Add(message, null, cache);
         }
     }
     else
     {
         debug value = new debug
         {
             Exception = error,
             Message   = message
         };
         if (cache == cacheType.None || checkCache(value, cache == cacheType.Queue))
         {
             queue.EnqueueNotNull(value);
         }
     }
 }
Пример #3
0
 /// <summary>
 /// 实时添加日志并抛出异常
 /// </summary>
 /// <param name="error">错误异常</param>
 /// <param name="message">提示信息</param>
 /// <param name="cache">缓存类型</param>
 public void ThrowReal(Exception error, string message, cacheType cache)
 {
     if (error != null && error.Message.StartsWith(ExceptionPrefix, StringComparison.Ordinal))
     {
         error = null;
     }
     if (error == null)
     {
         if (message != null)
         {
             ThrowReal(message, null, cache);
         }
     }
     else
     {
         debug value = new debug
         {
             Exception = error,
             Message   = message
         };
         if (cache == cacheType.None || checkCache(value, cache == cacheType.Queue))
         {
             realOutput(value);
         }
         throw error != null ? new Exception(ExceptionPrefix + message, error) : new Exception(ExceptionPrefix + message);
     }
 }
Пример #4
0
    // Use this for initialization
    void Start()
    {
        de = new debug();
        List <Assets.Nodo> solucion = new List <Assets.Nodo>();

        Assets.Nodo nodo;
        Assets.BusquedaEnAmplitud busqueda = new Assets.BusquedaEnAmplitud(de);

        //llamamos a la función de búsqueda
        nodo = busqueda.busqueda(1, 1);
        //para ver la traza
        Debug.Log(de.getDeb());



        //a través del nodo padre creamos una lista con la solución
        while (nodo.miPadre() != null)
        {
            solucion.Insert(0, nodo);
            nodo = nodo.miPadre();
        }
        solucion.Insert(0, nodo);

        Debug.Log("Lista de nodos con la solución");
        //recorremos toda la lista para mostrar la solución
        foreach (Assets.Nodo nod in solucion)
        {
            Debug.Log(nod.miEstado());
        }
    }
Пример #5
0
        /// <summary>
        /// 日志信息写文件
        /// </summary>
        /// <param name="value">日志信息</param>
        private void realOutput(debug value)
        {
            if (isDisposed == 0)
            {
                if (isFieStream)
                {
                    memoryPool.pushSubArray data = fileStreamWriter.GetBytes(@"
" + date.nowTime.Now.toString() + " : " + value.ToString() + @"
", fastCSharp.config.appSetting.Encoding);
                    Monitor.Enter(fileLock);
                    try
                    {
                        if (fileStream != null)
                        {
                            if (fileStream.UnsafeWrite(ref data) >= MaxSize && MaxSize > 0)
                            {
                                moveBak();
                            }
                            else
                            {
                                fileStream.Flush(true);
                            }
                            return;
                        }
                    }
                    finally { Monitor.Exit(fileLock); }
                }
                Console.WriteLine(@"
" + date.nowTime.Now.toString() + " : " + value.ToString());
            }
        }
Пример #6
0
 /// <summary>
 /// 添加新的日志
 /// </summary>
 /// <param name="value">日志信息</param>
 private void add(debug value)
 {
     if (!isStop)
     {
         Monitor.Enter(logLock);
         try
         {
             newDebugs.Add(value);
             Monitor.Pulse(logLock);
         }
         finally { Monitor.Exit(logLock); }
     }
 }
Пример #7
0
        /// <summary>
        /// 实时添加日志并抛出异常
        /// </summary>
        /// <param name="error">异常类型</param>
        public void ThrowReal(exceptionType error)
        {
            debug value = new debug
            {
                StackTrace = new StackTrace(),
                Type       = error
            };

            if (!checkCache(value))
            {
                output(value.ToString());
            }
            throw new Exception(ExceptionPrefix + value.ToString());
        }
Пример #8
0
        /// <summary>
        /// 实时添加日志
        /// </summary>
        /// <param name="message">提示信息</param>
        /// <param name="isStackTrace">是否包含调用堆栈</param>
        /// <param name="isCache">是否缓存</param>
        public void Real(string message, bool isStackTrace = false, bool isCache = false)
        {
            debug value = new debug
            {
                StackTrace = isStackTrace ? new StackTrace() : null,
                StackFrame = isStackTrace ? null : new StackFrame(1),
                Message    = message
            };

            if (!isCache || !checkCache(value))
            {
                output(value.ToString());
            }
        }
Пример #9
0
        /// <summary>
        /// 添加日志
        /// </summary>
        /// <param name="message">提示信息</param>
        /// <param name="stackFrame">堆栈帧函数信息</param>
        /// <param name="cache">缓存类型</param>
        public void Add(string message, StackFrame stackFrame, cacheType cache)
        {
            debug value = new debug
            {
                StackTrace = stackFrame == null ? new StackTrace(true) : null,
                StackFrame = stackFrame,
                Message    = message
            };

            if (cache == cacheType.None || checkCache(value, cache == cacheType.Queue))
            {
                queue.EnqueueNotNull(value);
            }
        }
Пример #10
0
        /// <summary>
        /// 实时添加日志
        /// </summary>
        /// <param name="message">提示信息</param>
        /// <param name="stackFrame">堆栈帧函数信息</param>
        /// <param name="cache">缓存类型</param>
        public void Real(string message, StackFrame stackFrame, cacheType cache)
        {
            debug value = new debug
            {
                StackTrace = stackFrame == null ? new StackTrace(true) : null,
                StackFrame = stackFrame,
                Message    = message
            };

            if (cache == cacheType.None || checkCache(value, cache == cacheType.Queue))
            {
                realOutput(value);
            }
        }
Пример #11
0
        /// <summary>
        /// 添加日志并抛出异常
        /// </summary>
        /// <param name="error">异常类型</param>
        public void Throw(exceptionType error)
        {
            debug value = new debug
            {
                StackTrace = new StackTrace(true),
                Type       = error
            };

            if (checkCache(value, true))
            {
                queue.EnqueueNotNull(value);
            }
            throw new Exception(ExceptionPrefix + value.ToString());
        }
Пример #12
0
        /// <summary>
        /// 添加日志
        /// </summary>
        /// <param name="message">提示信息</param>
        /// <param name="isStackTrace">是否包含调用堆栈</param>
        /// <param name="isCache">是否缓存</param>
        public void Add(string message, bool isStackTrace = false, bool isCache = false)
        {
            debug value = new debug
            {
                StackTrace = isStackTrace ? new StackTrace() : null,
                StackFrame = isStackTrace ? null : new StackFrame(1),
                Message    = message
            };

            if (!isCache || !checkCache(value))
            {
                add(value);
            }
        }
Пример #13
0
        /// <summary>
        /// 添加日志并抛出异常
        /// </summary>
        /// <param name="message">提示信息</param>
        /// <param name="stackFrame">堆栈帧函数信息</param>
        /// <param name="cache">缓存类型</param>
        public void Throw(string message, StackFrame stackFrame, cacheType cache)
        {
            debug value = new debug
            {
                StackTrace = stackFrame == null ? new StackTrace(true) : null,
                StackFrame = stackFrame,
                Message    = message
            };

            if (cache == cacheType.None || checkCache(value, cache == cacheType.Queue))
            {
                queue.EnqueueNotNull(value);
            }
            throw new Exception(ExceptionPrefix + message);
        }
Пример #14
0
        /// <summary>
        /// 添加日志并抛出异常
        /// </summary>
        /// <param name="message">提示信息</param>
        /// <param name="isStackTrace">是否包含调用堆栈</param>
        /// <param name="isCache">是否缓存</param>
        public void Throw(string message, bool isStackTrace = false, bool isCache = false)
        {
            debug value = new debug
            {
                StackTrace = isStackTrace ? new StackTrace() : null,
                StackFrame = isStackTrace ? null : new StackFrame(1),
                Message    = message
            };

            if (!isCache || !checkCache(value))
            {
                add(value);
            }
            throw new Exception(ExceptionPrefix + message);
        }
    //-------------------------------------------------------------------
    void Start()
    {
        sun = GameObject.Find("sun");
        ship = GameObject.Find("ship");

        // gravity beam
        gravityBeam = GameObject.Find("gravityBeam").GetComponent<gravityBeam>();
        anim = GetComponent<planetAnimation>();
        scoring = GameObject.Find("setup").GetComponent<scoring>();

        // settings
        tinker = GameObject.Find("tinker").GetComponent<tinker>();

        // debug
        debugScript = (debug)GameObject.Find("debug").GetComponent(typeof(debug));
    }
Пример #16
0
        /// <summary>
        /// 检测缓存是否存在
        /// </summary>
        /// <param name="value">日志信息</param>
        /// <returns>缓存是否存在</returns>
        private bool checkCache(debug value)
        {
            string key = value.ToString();

            while (Interlocked.CompareExchange(ref cacheLock, 1, 0) != 0)
            {
                Thread.Sleep(1);
            }
            try
            {
                if (cache.ContainsKey(key))
                {
                    return(true);
                }
                cache.Add(key, value);
            }
            finally { cacheLock = 0; }
            return(false);
        }
Пример #17
0
        public MainForm()
        {
            InitializeComponent();

            beginDialog startDialog = new beginDialog();

            if (startDialog.ShowDialog() == DialogResult.OK)
            {
                mLabelValueEinsatzOrt.Text     = startDialog.getEinsatzLocation();
                mLabelValueEinsatzStart.Text   = startDialog.getStartDateTime();
                mLabelValueProtocolLeader.Text = startDialog.getProtocolLeader();
                mLabelValueEinsatzLeader.Text  = startDialog.getEinsatzLeader();
                mStartTime = DateTime.Now;
            }
            mBeginTypingNewMessage = false;

            initListView();

            mDebug = new debug();
            mDebug.debugMaskSet(debug.DebugIds.DEBUG_MAINFORM);

            mDebug.dprintf("MainForm.cs", 62, debug.DebugIds.DEBUG_MAINFORM, "Init Finished");
            addedAutoCompleteValuesToTextBoxes();
        }
Пример #18
0
        //crea una lista de estados candidatos, los compara con los del padre por si se repite. devuelve una lista de nodos.
        public List <Nodo> expandir(debug de)
        {
            this.de = de;
            de.setDeb(this.miEstado());
            estado.setDebug(de);
            List <Estado> estadosCandidatos = estado.expandir();
            List <Nodo>   listaADevolver    = new List <Nodo>();

            foreach (Estado esta in estadosCandidatos)
            {
                if (padre == null)
                {
                    Nodo nuevoNodo = new Nodo(this, esta.getJ3(), esta.getJ4(), null);

                    listaADevolver.Add(nuevoNodo);
                }
                else if (!esta.comparaEstado(padre.getEstado()))
                {
                    Nodo nuevoNodo = new Nodo(this, esta.getJ3(), esta.getJ4(), esta.accion);
                    listaADevolver.Add(nuevoNodo);
                }
            }
            return(listaADevolver);
        }
Пример #19
0
 //constructor con los estados originales de las jarras
 public BusquedaEnAmplitud(debug de)
 {
     this.de = de;
 }
Пример #20
0
        private void Capitulo12Button_Click(object sender, RoutedEventArgs e)
        {
            debug debug = new debug();

            debug.Show();
        }
Пример #21
0
 /// <summary>
 /// 添加日志
 /// </summary>
 /// <param name="message">提示信息</param>
 /// <param name="isStackTrace">是否包含调用堆栈</param>
 /// <param name="isCache">是否缓存</param>
 public void Add(string message, bool isStackTrace = false, bool isCache = false)
 {
     debug value = new debug
     {
         StackTrace = isStackTrace ? new StackTrace() : null,
         StackFrame = isStackTrace ? null : new StackFrame(1),
         Message = message
     };
     if (!isCache || !checkCache(value)) add(value);
 }
Пример #22
0
 /// <summary>
 /// 实时添加日志并抛出异常
 /// </summary>
 /// <param name="message">提示信息</param>
 /// <param name="isStackTrace">是否包含调用堆栈</param>
 /// <param name="isCache">是否缓存</param>
 public void ThrowReal(string message, bool isStackTrace = false, bool isCache = false)
 {
     debug value = new debug
     {
         StackTrace = isStackTrace ? new StackTrace() : null,
         StackFrame = isStackTrace ? null : new StackFrame(1),
         Message = message
     };
     if (!isCache || !checkCache(value)) output(value.ToString());
     throw new Exception(ExceptionPrefix + message);
 }
Пример #23
0
 /// <summary>
 /// 实时添加日志并抛出异常
 /// </summary>
 /// <param name="error">错误异常</param>
 /// <param name="message">提示信息</param>
 /// <param name="isCache">是否缓存</param>
 public void ThrowReal(Exception error, string message = null, bool isCache = true)
 {
     if (error != null && error.Message.StartsWith(ExceptionPrefix, StringComparison.Ordinal)) error = null;
     if (error == null)
     {
         if (message != null) ThrowReal(message, true, isCache);
     }
     else
     {
         debug value = new debug
         {
             Exception = error,
             Message = message
         };
         if (!isCache || !checkCache(value)) output(value.ToString());
         throw error != null ? new Exception(ExceptionPrefix + message, error) : new Exception(ExceptionPrefix + message);
     }
 }
Пример #24
0
 /// <summary>
 /// 实时添加日志并抛出异常
 /// </summary>
 /// <param name="error">异常类型</param>
 public void ThrowReal(exceptionType error)
 {
     debug value = new debug
     {
         StackTrace = new StackTrace(),
         Type = error
     };
     if (!checkCache(value)) output(value.ToString());
     throw new Exception(ExceptionPrefix + value.ToString());
 }
Пример #25
0
 /// <summary>
 /// 检测缓存是否存在
 /// </summary>
 /// <param name="value">日志信息</param>
 /// <returns>缓存是否存在</returns>
 private bool checkCache(debug value)
 {
     string key = value.ToString();
     while (Interlocked.CompareExchange(ref cacheLock, 1, 0) != 0) Thread.Sleep(1);
     try
     {
         if (cache.ContainsKey(key)) return true;
         cache.Add(key, value);
     }
     finally { cacheLock = 0; }
     return false;
 }
Пример #26
0
 /// <summary>
 /// 添加日志
 /// </summary>
 /// <param name="error">错误异常</param>
 /// <param name="message">提示信息</param>
 /// <param name="isCache">是否缓存</param>
 public void Add(Exception error, string message = null, bool isCache = true)
 {
     if (error != null && error.Message.StartsWith(ExceptionPrefix, StringComparison.Ordinal)) error = null;
     if (error == null)
     {
         if (message != null) Add(message, true, isCache);
     }
     else
     {
         debug value = new debug
         {
             Exception = error,
             Message = message
         };
         if (!isCache || !checkCache(value)) add(value);
     }
 }
Пример #27
0
 public void setDebug(debug de)
 {
     this.de = de;
 }
Пример #28
0
 /// <summary>
 /// 添加新的日志
 /// </summary>
 /// <param name="value">日志信息</param>
 private void add(debug value)
 {
     if (!isStop)
     {
         Monitor.Enter(logLock);
         try
         {
             newDebugs.Add(value);
             Monitor.Pulse(logLock);
         }
         finally { Monitor.Exit(logLock); }
     }
 }