Beispiel #1
0
 internal JobOutput(string description, JobOutputType jobOutputType)
 {
     Description   = description;
     JobOutputType = jobOutputType;
 }
Beispiel #2
0
        /// <summary>
        /// Flushes the streams.
        /// </summary>
        /// <param name="trace">The trace.</param>
        /// <param name="jobOutputType">Type of the job output.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
        /// <exception cref="System.ArgumentException">QueueOutput:Invalid JobType:</exception>
        public bool QueueOutput(string trace, JobOutputType jobOutputType)
        {
            try
            {
                bool retval = false;
                if (_bufferEnabled)
                {
                    AddTraceToBuffer(trace);
                }

                for (int i = 0; i < _writerJobs.Count; i++)
                {
                    switch (_writerJobs[i].JobType)
                    {
                    // Always write to console
                    case JobType.Console:
                    case JobType.Gui:
                        retval = true;
                        break;

                    case JobType.Csv:
                    case JobType.Network:
                        if ((jobOutputType & JobOutputType.Trace) == JobOutputType.Trace)
                        {
                            retval = true;
                            break;
                        }

                        continue;

                    case JobType.Log:
                        if ((jobOutputType & JobOutputType.Log) == JobOutputType.Log)
                        {
                            retval = true;
                            break;
                        }

                        continue;

                    case JobType.Etw:
                        if ((jobOutputType & JobOutputType.Etw) == JobOutputType.Etw)
                        {
                            retval = true;
                            break;
                        }

                        continue;

                    case JobType.Etl:
                    case JobType.Unknown:
                    default:
                        Debug.Print("QueueOutput:Invalid JobType:{0}", _writerJobs[i].JobType);
                        throw new ArgumentException("QueueOutput:Invalid JobType:" + _writerJobs[i].JobType.ToString());
                    }

                    if (retval && _writerJobs[i].Writer.Queue.Queue(trace))
                    {
                        _writerJobs[i].Writer.QueuedEvents++;
                    }
                    else
                    {
                        Debug.Print("QueueOutput:Error:MissedQueueEvents:{0}", _writerJobs[i].JobType);
                        _writerJobs[i].Writer.MissedQueueEvents++;
                    }
                }

                return(retval);
            }
            catch (Exception e)
            {
                Debug.Print("QueueOutput:Exception:{0}", e.ToString());
                WriterQueueErrors++;
                return(false);
            }
        }