public static void LateBoundTypeFailure(IStatusAppender s, string originalString, Exception ex)
 {
     Component component = typeof(RuntimeWarning).Assembly.AsComponent();
     Status status = new Status(
         component, SR.LateBoundTypeFailure(originalString), ex, FileLocation.Empty);
     s.Append(status);
 }
        public static IStatusAppender Filtered(IStatusAppender baseAppender, Severity[] severities)
        {
            if (severities == null) { throw new ArgumentNullException("severities"); } // $NON-NLS-1

            if (baseAppender == null || object.ReferenceEquals(baseAppender, StatusAppender.Null)) {
                return StatusAppender.Null;
            } else if (severities.Length == 0) {
                return StatusAppender.Null;
            } else {
                // 2^0 = 1 (None)
                // 2^1 = 2 (Error)
                // 2^2 = 4 (Warning)
                // 2^3 = 8 (Information)

                int result = 0;

                for (int i = 0; i < severities.Length; i++) {
                    result &= (int) (Math.Pow(2, (int) severities[i]));
                    if (result >= 2 + 4 + 8) { // all have been set or more
                        return baseAppender;
                    }
                }

                bool appendInfos = (result & 8) > 0;
                bool appendWarnings = (result & 4) > 0;
                bool appendErrors = (result & 2) > 0;

                return new FilteredStatusAppender(baseAppender, appendErrors, appendWarnings, appendInfos);
            }
        }
 public static IStatusAppender Filtered(IStatusAppender baseAppender, Func<IStatus, bool> predicate)
 {
     if (baseAppender == null || object.ReferenceEquals(baseAppender, StatusAppender.Null)) {
         return StatusAppender.Null;
     } else {
         return new PredicateStatusAppender(baseAppender, predicate);
     }
 }
 public FilteredStatusAppender(IStatusAppender baseAppender, bool appendErrors, bool appendWarnings, bool appendInfos)
     : base(baseAppender)
 {
     flags = new BitVector32();
     flags[APPEND_WARNINGS] = appendWarnings;
     flags[APPEND_ERRORS] = appendErrors;
     flags[APPEND_INFOS] = appendInfos;
     this.baseAppender = baseAppender;
 }
 public static void ServiceFailedToStart(IStatusAppender s,
                                         Type serviceType,
                                         Exception ex)
 {
     s.AppendError(SR.ServiceFailedToStart(serviceType), ex);
 }
 public static void AssemblyNotInContext(IStatusAppender s, Component componentName, AssemblyName name)
 {
     Status warn = new Status(
         componentName, Severity.Warning, SR.AssemblyNotInContext(name), FileLocation.Empty);
     s.Append(warn);
 }
 protected Service()
 {
     this.status = StatusAppender.ForType(GetType());
 }
 protected virtual void StartServiceCore(IStatusAppender status)
 {
 }
        public void StartService()
        {
            if (!this.IsStarted) {
                try {
                    this.status = new StatusAppender();
                    StartServiceCore(this.status);

                } catch (Exception ex) {
                    if (Require.IsCriticalException(ex))
                        throw;

                    this.InitializationError = ex;
                    this.ServiceState |= ServiceStates.WithErrors;
                    RuntimeWarning.ServiceFailedToStart(
                        this.status, GetType(), ex);
                }

                this.IsStarted = true;
            }
        }
        static IStatus AppendCore(IStatusAppender source, IStatus status)
        {
            if (source == null)
                throw new ArgumentNullException("source"); // $NON-NLS-1

            source.Append(status);
            return status;
        }
 public static IStatusAppender ErrorsOnly(IStatusAppender baseAppender)
 {
     return Filtered(baseAppender, new Severity[] { Severity.Error} );
 }
        public static IStatusAppender Synchronized(IStatusAppender statusAppender)
        {
            if (statusAppender == null)
                throw new ArgumentNullException("statusAppender");

            if (object.ReferenceEquals(Null, statusAppender))
                return Null;

            SynchronizedStatusAppender ssa = statusAppender as SynchronizedStatusAppender;
            if (ssa == null)
                return new SynchronizedStatusAppender(statusAppender);
            else
                return ssa;
        }
 public static IStatusAppender InformationOnly(IStatusAppender baseAppender)
 {
     return Filtered(baseAppender, new Severity[] { Severity.Information } );
 }
 public PredicateStatusAppender(IStatusAppender baseAppender, Func<IStatus, bool> predicate)
     : base(baseAppender)
 {
     this.predicate = predicate;
 }
 public SynchronizedStatusAppender(IStatusAppender inner)
 {
     this.inner = inner;
 }