コード例 #1
0
        public ConsumerSession Decode(RlpStream rlpStream,
                                      RlpBehaviors rlpBehaviors = RlpBehaviors.None)
        {
            rlpStream.ReadSequenceLength();
            Keccak           id                        = rlpStream.DecodeKeccak();
            Keccak           depositId                 = rlpStream.DecodeKeccak();
            Keccak           dataAssetId               = rlpStream.DecodeKeccak();
            Address          consumerAddress           = rlpStream.DecodeAddress();
            PublicKey        consumerNodeId            = new PublicKey(rlpStream.DecodeByteArray());
            Address          providerAddress           = rlpStream.DecodeAddress();
            PublicKey        providerNodeId            = new PublicKey(rlpStream.DecodeByteArray());
            SessionState     state                     = (SessionState)rlpStream.DecodeInt();
            uint             startUnitsFromProvider    = rlpStream.DecodeUInt();
            uint             startUnitsFromConsumer    = rlpStream.DecodeUInt();
            ulong            startTimestamp            = rlpStream.DecodeUlong();
            ulong            finishTimestamp           = rlpStream.DecodeUlong();
            uint             consumedUnits             = rlpStream.DecodeUInt();
            uint             unpaidUnits               = rlpStream.DecodeUInt();
            uint             paidUnits                 = rlpStream.DecodeUInt();
            uint             settledUnits              = rlpStream.DecodeUInt();
            uint             consumedUnitsFromProvider = rlpStream.DecodeUInt();
            DataAvailability dataAvailability          = (DataAvailability)rlpStream.DecodeInt();

            return(new ConsumerSession(id, depositId, dataAssetId, consumerAddress, consumerNodeId, providerAddress,
                                       providerNodeId, state, startUnitsFromProvider, startUnitsFromConsumer, startTimestamp, finishTimestamp,
                                       consumedUnits, unpaidUnits, paidUnits, settledUnits, consumedUnitsFromProvider, dataAvailability));
        }
コード例 #2
0
 public void SendDataAvailability(Keccak depositId, DataAvailability dataAvailability)
 {
     if (Logger.IsTrace)
     {
         Logger.Trace($"{Session.RemoteNodeId} NDM sending: dataavailability");
     }
     Send(new DataAvailabilityMessage(depositId, dataAvailability));
 }
コード例 #3
0
        private void Test(DataAssetUnitType unitType, uint depositedUnits,
                          long consumedUnits, uint startTimestamp, ulong nowSeconds, DataAvailability availability)
        {
            var dataAvailability = _validator.GetAvailability(unitType, depositedUnits, consumedUnits,
                                                              startTimestamp, nowSeconds);

            dataAvailability.Should().Be(availability);
        }
コード例 #4
0
        public DataAvailabilityMessage Deserialize(byte[] bytes)
        {
            RlpStream context = bytes.AsRlpStream();

            context.ReadSequenceLength();
            Keccak?          depositId = context.DecodeKeccak();
            DataAvailability reason    = (DataAvailability)context.DecodeInt();

            return(new DataAvailabilityMessage(depositId, reason));
        }
コード例 #5
0
        public async Task SetDataAvailabilityAsync(Keccak depositId, DataAvailability dataAvailability)
        {
            var session = _sessionService.GetActive(depositId);

            if (session is null)
            {
                return;
            }

            if (_logger.IsInfo)
            {
                _logger.Info($"Setting data availability: '{dataAvailability}', for deposit: '{depositId}', session: {session.Id}.");
            }
            session.SetDataAvailability(dataAvailability);
            await _sessionRepository.UpdateAsync(session);

            await _consumerNotifier.SendDataAvailabilityChangedAsync(depositId, session.Id, dataAvailability);
        }
コード例 #6
0
 public DataAvailabilityMessage(Keccak depositId, DataAvailability dataAvailability)
 {
     DepositId        = depositId;
     DataAvailability = dataAvailability;
 }
コード例 #7
0
ファイル: ConsumerService.cs プロジェクト: fosfuan/nethermind
 public Task SetDataAvailabilityAsync(Keccak depositId, DataAvailability dataAvailability)
 => _dataConsumerService.SetDataAvailabilityAsync(depositId, dataAvailability);
コード例 #8
0
 public Task SendDataAvailabilityChangedAsync(Keccak depositId, Keccak sessionId, DataAvailability availability)
 => _notifier.NotifyAsync(new Notification("data_availability_changed",
                                           new
 {
     depositId,
     sessionId,
     availability = availability.ToString()
 }));
コード例 #9
0
 public void PopulateFromJson(JObject jsonObject)
 {
     m_god          = (God)Serialization.JsonTokenValue <int>(jsonObject, "god", 0);
     m_availability = (DataAvailability)Serialization.JsonTokenValue <int>(jsonObject, "availability", 0);
 }
コード例 #10
0
 private void TestTime(uint depositedUnits, uint startTimestamp, ulong nowSeconds, DataAvailability availability)
 => Test(DataAssetUnitType.Time, depositedUnits, 0, startTimestamp, nowSeconds, availability);
コード例 #11
0
 private void TestUnits(uint depositedUnits, long consumedUnits, DataAvailability availability)
 => Test(DataAssetUnitType.Unit, depositedUnits, consumedUnits, 0, 0, availability);
コード例 #12
0
 public void PopulateFromJson(JObject jsonObject)
 {
     m_companion    = Serialization.JsonTokenIdValue <CompanionDefinition>(jsonObject, "companion");
     m_availability = (DataAvailability)Serialization.JsonTokenValue <int>(jsonObject, "availability", 0);
 }
コード例 #13
0
 public void PopulateFromJson(JObject jsonObject)
 {
     m_fight        = Serialization.JsonTokenIdValue <FightDefinition>(jsonObject, "fight");
     m_availability = (DataAvailability)Serialization.JsonTokenValue <int>(jsonObject, "availability", 0);
 }
コード例 #14
0
 public void PopulateFromJson(JObject jsonObject)
 {
     m_squad        = Serialization.JsonTokenIdValue <SquadDefinition>(jsonObject, "squad");
     m_availability = (DataAvailability)Serialization.JsonTokenValue <int>(jsonObject, "availability", 0);
 }