示例#1
0
        public ConsumerSession Decode(Nethermind.Core.Encoding.Rlp.DecoderContext context,
                                      RlpBehaviors rlpBehaviors = RlpBehaviors.None)
        {
            var sequenceLength = context.ReadSequenceLength();

            if (sequenceLength == 0)
            {
                return(null);
            }

            var id                        = context.DecodeKeccak();
            var depositId                 = context.DecodeKeccak();
            var dataHeaderId              = context.DecodeKeccak();
            var consumerAddress           = context.DecodeAddress();
            var consumerNodeId            = new PublicKey(context.DecodeByteArray());
            var providerAddress           = context.DecodeAddress();
            var providerNodeId            = new PublicKey(context.DecodeByteArray());
            var state                     = (SessionState)context.DecodeInt();
            var startUnitsFromProvider    = context.DecodeUInt();
            var startUnitsFromConsumer    = context.DecodeUInt();
            var startTimestamp            = context.DecodeUlong();
            var finishTimestamp           = context.DecodeUlong();
            var consumedUnits             = context.DecodeUInt();
            var unpaidUnits               = context.DecodeUInt();
            var paidUnits                 = context.DecodeUInt();
            var settledUnits              = context.DecodeUInt();
            var consumedUnitsFromProvider = context.DecodeUInt();
            var dataAvailability          = (DataAvailability)context.DecodeInt();
            var streamEnabled             = context.DecodeBool();
            var subscriptions             = context.DecodeArray(c => c.DecodeString());

            return(new ConsumerSession(id, depositId, dataHeaderId, consumerAddress, consumerNodeId, providerAddress,
                                       providerNodeId, state, startUnitsFromProvider, startUnitsFromConsumer, startTimestamp, finishTimestamp,
                                       consumedUnits, unpaidUnits, paidUnits, settledUnits, consumedUnitsFromProvider, dataAvailability,
                                       streamEnabled, subscriptions));
        }