public static PersistedDataSourceStatus Combine(this PersistedDataSourceStatus left,
                                                        PersistedDataSourceStatus right)
        {
            if (left == right)
            {
                return(left);
            }

            switch (left)
            {
            // If the left source was unavailable then the right source trumps this. It can either be
            // Unknown, Available, or Partial.
            case PersistedDataSourceStatus.Unavailable:
                return(right);

            // Unknown trumps unavailable, and turns Available to partial
            case PersistedDataSourceStatus.Unknown:
                switch (right)
                {
                case PersistedDataSourceStatus.Unavailable:
                    return(left);

                case PersistedDataSourceStatus.Available:
                    return(PersistedDataSourceStatus.Partial);

                case PersistedDataSourceStatus.Partial:
                    return(right);
                }

                break; // Fall-through to logic fault exception.

            // Available trumps Unavailable, and turns Unknown to partial.
            case PersistedDataSourceStatus.Available:
                switch (right)
                {
                case PersistedDataSourceStatus.Unavailable:
                    return(left);

                case PersistedDataSourceStatus.Unknown:
                    return(PersistedDataSourceStatus.Partial);

                case PersistedDataSourceStatus.Partial:
                    return(right);
                }

                break; // Fall-through to logic fault exception.

            // Partial data is always partial, no matter what the right source is.
            case PersistedDataSourceStatus.Partial:
                return(left);
            }

            throw new InvalidOperationException("Somebody is bad at switch statements.");
        }
        public static PersistedDataSourceStatus Combine(this PersistedDataSourceStatus left,
                                                        PersistedDataSourceStatus right)
        {
            if (left == right)
            {
                return left;
            }

            switch (left)
            {
                // If the left source was unavailable then the right source trumps this. It can either be
                // Unknown, Available, or Partial.
            case PersistedDataSourceStatus.Unavailable:
                return right;
                // Unknown trumps unavailable, and turns Available to partial
            case PersistedDataSourceStatus.Unknown:
                switch (right)
                {
                case PersistedDataSourceStatus.Unavailable:
                    return left;
                case PersistedDataSourceStatus.Available:
                    return PersistedDataSourceStatus.Partial;
                case PersistedDataSourceStatus.Partial:
                    return right;
                }

                break; // Fall-through to logic fault exception.
                // Available trumps Unavailable, and turns Unknown to partial.
            case PersistedDataSourceStatus.Available:
                switch (right)
                {
                case PersistedDataSourceStatus.Unavailable:
                    return left;
                case PersistedDataSourceStatus.Unknown:
                    return PersistedDataSourceStatus.Partial;
                case PersistedDataSourceStatus.Partial:
                    return right;
                }

                break; // Fall-through to logic fault exception.
                // Partial data is always partial, no matter what the right source is.
            case PersistedDataSourceStatus.Partial:
                return left;
            }

            throw new InvalidOperationException("Somebody is bad at switch statements.");
        }
 public PersistedDataSource(string name, PersistedDataSourceStatus status)
 {
     this.Name = name;
     this.Status = status;
 }
Example #4
0
 public PersistedDataSource(string name, PersistedDataSourceStatus status)
 {
     this.Name   = name;
     this.Status = status;
 }