示例#1
0
        public RepositoryState deserialize(NetworkBuffer buffer)
        {
            int             revisionNumber = buffer.parseInt32(COMMIT_OFFSET);
            RepositoryState state          = new RepositoryState(revisionNumber);

            int numberOfBeliefs = buffer.parseInt32(NUM_BELIEFS_OFFSET);
            int baseOffset      = HEADER_SIZE;

            for (int i = 0; i < numberOfBeliefs; ++i, baseOffset += BELIEF_SIZE)
            {
                int typeVal            = buffer.readByte(baseOffset + TYPE_OFFSET);
                Belief.BeliefType type = Belief.BeliefType.INVALID;
                if (Enum.IsDefined(typeof(Belief.BeliefType), typeVal))
                {
                    type = (Belief.BeliefType)typeVal;
                }
                else
                {
                    Log.error("Invalid belief type: " + typeVal);
                }

                int    customType = buffer.parseInt32(baseOffset + CUSTOM_TYPE_OFFSET);
                int    id         = buffer.parseInt32(baseOffset + BELIEF_ID_OFFSET);
                byte[] digest     = buffer.readBytes(baseOffset + DIGEST_OFFSET, DIGEST_SIZE);
                Hash   hash       = new Hash(digest);

                Belief.Key key = null;
                if (type == Belief.BeliefType.CUSTOM)
                {
                    key = new Belief.Key(customType);
                }
                else
                {
                    key = new Belief.Key(type);
                }

                state.Add(new CacheKey(key, id), hash);
            }

            return(state);
        }
示例#2
0
 public IEnumerable <BeliefType> FindAllBeliefs <BeliefType>(Belief.BeliefType type) where BeliefType : Belief
 {
     return(beliefRepo.FindAll <BeliefType>(type));
 }
示例#3
0
 public BeliefType Find <BeliefType> (Belief.BeliefType type, int id) where BeliefType : Belief
 {
     return(beliefRepo.Find <BeliefType>(type, id));
 }
示例#4
0
 SortedDictionary <int, Belief> lookup(Belief.BeliefType key, SortedDictionary <Belief.Key, SortedDictionary <int, Belief> > dictionary)
 {
     return(lookup(Belief.keyOf(key), dictionary));
 }
示例#5
0
 public BeliefType Find <BeliefType>(Belief.BeliefType type, int id) where BeliefType : Belief
 {
     return(Find <BeliefType>(Belief.keyOf(type), id));
 }
示例#6
0
 public IEnumerable <BeliefType> FindAll <BeliefType>(Belief.BeliefType type) where BeliefType : Belief
 {
     return(GetAllCachedBeliefs()
            .Where(belief => belief.GetBelief() as BeliefType != null && belief.GetBelief().getBeliefType() == type)
            .Select(cached => (BeliefType)cached.GetBelief()));
 }
示例#7
0
 private SortedDictionary <int, Belief> getBeliefsFor(Belief.BeliefType type)
 {
     return(getBeliefsFor(Belief.keyOf(type)));
 }