Esempio n. 1
0
        public SenderMessageKey RemoveSenderMessageKey(uint iteration)
        {
            LinkedList <StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey>  keys     = new LinkedList <StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey>(_senderKeyStateStructure.SenderMessageKeysList);
            IEnumerator <StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey> iterator = keys.GetEnumerator();            // iterator();

            StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey result = null;

            while (iterator.MoveNext())                                                                           // hastNext
            {
                StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey senderMessageKey = iterator.Current; // next();

                if (senderMessageKey.Iteration == iteration)                                                      //senderMessageKey.getIteration()
                {
                    result = senderMessageKey;
                    keys.Remove(senderMessageKey);                     //iterator.remove();
                    break;
                }
            }

            _senderKeyStateStructure = _senderKeyStateStructure.ToBuilder()
                                       .ClearSenderMessageKeys()
                                       //.AddAllSenderMessageKeys(keys)
                                       .AddRangeSenderMessageKeys(keys)
                                       .Build();

            if (result != null)
            {
                return(new SenderMessageKey(result.Iteration, result.Seed.ToByteArray()));
            }
            else
            {
                return(null);
            }
        }
Esempio n. 2
0
        public void AddSenderMessageKey(SenderMessageKey senderMessageKey)
        {
            StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey senderMessageKeyStructure =
                StorageProtos.SenderKeyStateStructure.Types.SenderMessageKey.CreateBuilder()
                .SetIteration(senderMessageKey.GetIteration())
                .SetSeed(ByteString.CopyFrom(senderMessageKey.GetSeed()))
                .Build();

            StorageProtos.SenderKeyStateStructure.Builder builder = _senderKeyStateStructure.ToBuilder();
            builder.AddSenderMessageKeys(senderMessageKeyStructure);

            if (builder.SenderMessageKeysList.Count > MaxMessageKeys)
            {
                builder.SenderMessageKeysList.RemoveAt(0);
            }
            _senderKeyStateStructure = builder.Build();
        }