Пример #1
0
        private Proto.Msg.DeltaPropagation DeltaPropagationToProto(DeltaPropagation msg)
        {
            var proto = new Proto.Msg.DeltaPropagation
            {
                FromNode = SerializationSupport.UniqueAddressToProto(msg.FromNode)
            };

            if (msg.ShouldReply)
            {
                proto.Reply = msg.ShouldReply;
            }

            foreach (var entry in msg.Deltas)
            {
                var d     = entry.Value;
                var delta = new Proto.Msg.DeltaPropagation.Types.Entry
                {
                    Key       = entry.Key,
                    FromSeqNr = d.FromSeqNr,
                    Envelope  = DataEnvelopeToProto(d.DataEnvelope)
                };
                if (d.ToSeqNr != d.FromSeqNr)
                {
                    delta.ToSeqNr = d.ToSeqNr;
                }

                proto.Entries.Add(delta);
            }

            return(proto);
        }
Пример #2
0
        private Proto.Msg.DataEnvelope.Types.PruningEntry PruningToProto(UniqueAddress addr, IPruningState pruning)
        {
            var proto = new Proto.Msg.DataEnvelope.Types.PruningEntry
            {
                RemovedAddress = SerializationSupport.UniqueAddressToProto(addr)
            };

            switch (pruning)
            {
            case PruningPerformed performed:
                proto.Performed    = true;
                proto.ObsoleteTime = performed.ObsoleteTime.Ticks;
                break;

            case PruningInitialized init:
                proto.Performed    = false;
                proto.OwnerAddress = SerializationSupport.UniqueAddressToProto(init.Owner);
                foreach (var address in init.Seen)
                {
                    proto.Seen.Add(SerializationSupport.AddressToProto(address));
                }
                break;
            }

            return(proto);
        }
Пример #3
0
        private Proto.Msg.Read ReadToProto(Read read)
        {
            var proto = new Proto.Msg.Read
            {
                Key = read.Key
            };

            if (!(read.FromNode is null))
            {
                proto.FromNode = SerializationSupport.UniqueAddressToProto(read.FromNode);
            }
            return(proto);
        }
Пример #4
0
        private Proto.Msg.Write WriteToProto(Write write)
        {
            var proto = new Proto.Msg.Write
            {
                Key      = write.Key,
                Envelope = DataEnvelopeToProto(write.Envelope),
            };

            if (!(write.FromNode is null))
            {
                proto.FromNode = SerializationSupport.UniqueAddressToProto(write.FromNode);
            }
            return(proto);
        }