public static SaveStatus get()

in accord-core/src/main/java/accord/primitives/SaveStatus.java [262:337]


    public static SaveStatus get(Status status, Known known)
    {
        if (known.isInvalidated())
            return Invalidated;

        if (status.compareTo(Status.PreCommitted) < 0)
        {
            if (known.isExecuteAtKnown())
            {
                switch (status)
                {
                    case NotDefined: return PreCommitted;
                    case PreAccepted: return PreCommittedWithDefinition;
                    case AcceptedMedium:
                    case AcceptedSlow:
                    case AcceptedInvalidate:
                        known = known.with(DepsUnknown);
                        // if the decision is known, we're really PreCommitted
                }
            }
            else
            {
                switch (status)
                {
                    case NotDefined: return NotDefined;
                    case PreAccepted:
                        return known.is(NoVote) ? PreAccepted : known.is(DepsUnknown) ? PreAcceptedWithVote : PreAcceptedWithDeps;
                    case AcceptedMedium:
                        if (!known.isDefinitionKnown()) return AcceptedMedium;
                        if (!known.hasPrivilegedVote()) return AcceptedMediumWithDefinition;
                        return AcceptedMediumWithDefAndVote;
                    case AcceptedSlow:
                        if (!known.isDefinitionKnown()) return AcceptedSlow;
                        if (!known.hasPrivilegedVote()) return AcceptedSlowWithDefinition;
                        return AcceptedSlowWithDefAndVote;
                    case AcceptedInvalidate:
                        return known.isDefinitionKnown() ? AcceptedInvalidateWithDefinition : AcceptedInvalidate;
                        // if the decision is known, we're really PreCommitted
                }
            }
        }

        switch (status)
        {
            default: throw new AssertionError("Unexpected status: " + status);
            case AcceptedMedium:
            case AcceptedSlow:
            case AcceptedInvalidate:
            case PreCommitted:
                if (!known.isDefinitionKnown())
                {
                    switch (known.deps())
                    {
                        case DepsProposedFixed: return PreCommittedWithFixedDeps;
                        case DepsProposed:      return PreCommittedWithDeps;
                        default:                return PreCommitted;
                    }
                }
                switch (known.deps())
                {
                    default:                    throw new AssertionError("Unexpected DepsKnown: " + known.deps());
                    case DepsErased:
                    case DepsUnknown:
                    case DepsFromCoordinator:   return PreCommittedWithDefinition; // TODO (required): consider if this is correct
                    case DepsProposedFixed:     return PreCommittedWithDefAndFixedDeps;
                    case DepsProposed:          return PreCommittedWithDefAndDeps;
                    case DepsKnown:
                    case DepsCommitted:
                }
            case Committed: return known.deps() == DepsKnown ? Stable : Committed;
            case Stable: return Stable;
            case PreApplied: return PreApplied;
            case Applied: return Applied;
            case Invalidated: return Invalidated;
        }
    }