public bool Equals(DestinyVendorReceipt input) { if (input == null) { return(false); } return (( CurrencyPaid == input.CurrencyPaid || (CurrencyPaid != null && CurrencyPaid.SequenceEqual(input.CurrencyPaid)) ) && ( ItemReceived == input.ItemReceived || (ItemReceived != null && ItemReceived.Equals(input.ItemReceived)) ) && ( LicenseUnlockHash == input.LicenseUnlockHash || (LicenseUnlockHash.Equals(input.LicenseUnlockHash)) ) && ( PurchasedByCharacterId == input.PurchasedByCharacterId || (PurchasedByCharacterId.Equals(input.PurchasedByCharacterId)) ) && ( RefundPolicy == input.RefundPolicy || (RefundPolicy != null && RefundPolicy.Equals(input.RefundPolicy)) ) && ( SequenceNumber == input.SequenceNumber || (SequenceNumber.Equals(input.SequenceNumber)) ) && ( TimeToExpiration == input.TimeToExpiration || (TimeToExpiration.Equals(input.TimeToExpiration)) ) && ( ExpiresOn == input.ExpiresOn || (ExpiresOn != null && ExpiresOn.Equals(input.ExpiresOn)) )); }
public async Task InitAsync() { AddDecoders(); var logManager = _api.LogManager; var logger = logManager.GetClassLogger(); var skipDepositVerification = HasEnabledVariable("SKIP_DEPOSIT_VERIFICATION"); var backgroundServicesDisabled = HasEnabledVariable("BACKGROUND_SERVICES_DISABLED"); var disableSendingPaymentClaimTransaction = HasEnabledVariable("SENDING_PAYMENT_CLAIM_TRANSACTION_DISABLED"); var instantPaymentClaimVerificationEnabled = HasEnabledVariable("INSTANT_PAYMENT_CLAIM_VERIFICATION_ENABLED"); if (skipDepositVerification) { if (logger.IsWarn) { logger.Warn("*** NDM provider skipping deposit verification ***"); } } if (backgroundServicesDisabled) { if (logger.IsWarn) { logger.Warn("*** NDM provider background services are disabled ***"); } } if (disableSendingPaymentClaimTransaction) { if (logger.IsWarn) { logger.Warn("*** NDM provider sending payment claim transaction is disabled ***"); } } if (instantPaymentClaimVerificationEnabled) { if (logger.IsWarn) { logger.Warn("*** NDM provider instant payment claim verification is enabled ***"); } } var blockchainBridge = _api.BlockchainBridge; var ndmConfig = _api.NdmConfig; var txPool = _api.TxPool; var dbConfig = _api.ConfigProvider.GetConfig <IProviderDbConfig>(); var contractAddress = string.IsNullOrWhiteSpace(ndmConfig.ContractAddress) ? Address.Zero : new Address(ndmConfig.ContractAddress); _gasPriceService = _api.GasPriceService; var dbInitializer = new ProviderDbInitializer(_api.DbProvider, dbConfig, _api.RocksDbFactory, _api.MemDbFactory); await dbInitializer.Init(); var consumerRlpDecoder = new ConsumerDecoder(); var dataAssetRlpDecoder = new DataAssetDecoder(); var depositApprovalRlpDecoder = new DepositApprovalDecoder(); var paymentClaimRlpDecoder = new PaymentClaimDecoder(); var receiptRlpDecoder = new DataDeliveryReceiptDetailsDecoder(); var sessionRlpDecoder = new ProviderSessionDecoder(); var unitsRangeRlpDecoder = new UnitsRangeDecoder(); var accountAddress = string.IsNullOrWhiteSpace(ndmConfig.ProviderAddress) ? Address.Zero : new Address(ndmConfig.ProviderAddress); var coldWalletAddress = string.IsNullOrWhiteSpace(ndmConfig.ProviderColdWalletAddress) ? Address.Zero : new Address(ndmConfig.ProviderColdWalletAddress); var depositService = new DepositService(blockchainBridge, _api.AbiEncoder, _api.Wallet, contractAddress); var paymentService = new PaymentService(blockchainBridge, _api.AbiEncoder, _api.Wallet, contractAddress, logManager, txPool); var refundPolicy = new RefundPolicy(); var dataAvailabilityValidator = new DataAvailabilityValidator(); var transactionVerifier = new TransactionVerifier(blockchainBridge, ndmConfig.BlockConfirmations); var transactionService = _api.TransactionService; var timestamper = _api.Timestamper; IConsumerRepository consumerRepository; IDataAssetRepository dataAssetRepository; IProviderDepositApprovalRepository depositApprovalRepository; IPaymentClaimRepository paymentClaimRepository; IProviderSessionRepository sessionRepository; IReceiptRepository receiptRepository; switch (ndmConfig.Persistence?.ToLowerInvariant()) { case "mongo": IMongoDatabase?database = _api.MongoProvider.GetDatabase(); if (database == null) { throw new InvalidOperationException("Failed to initialize Mongo DB for NDM"); } consumerRepository = new ConsumerMongoRepository(database); dataAssetRepository = new DataAssetMongoRepository(database); depositApprovalRepository = new ProviderDepositApprovalMongoRepository(database); paymentClaimRepository = new PaymentClaimMongoRepository(database); receiptRepository = new ReceiptMongoRepository(database, "providerReceipts"); sessionRepository = new ProviderSessionMongoRepository(database); break; default: consumerRepository = new ConsumerRocksRepository(_api.Db <IDb>(ProviderDbNames.Consumers), consumerRlpDecoder); dataAssetRepository = new DataAssetRocksRepository(_api.Db <IDb>(ProviderDbNames.DataAssets), dataAssetRlpDecoder); depositApprovalRepository = new ProviderDepositApprovalRocksRepository( _api.Db <IDb>(ProviderDbNames.ProviderDepositApprovals), depositApprovalRlpDecoder); paymentClaimRepository = new PaymentClaimRocksRepository(_api.Db <IDb>(ProviderDbNames.PaymentClaims), paymentClaimRlpDecoder); receiptRepository = new ReceiptRocksRepository(_api.Db <IDb>(ProviderDbNames.ProviderReceipts), receiptRlpDecoder); sessionRepository = new ProviderSessionRocksRepository(_api.Db <IDb>(ProviderDbNames.ProviderSessions), sessionRlpDecoder); break; } var wallet = _api.Wallet; var depositHandlerFactory = new DepositNodesHandlerFactory(); _providerThresholdsService = new ProviderThresholdsService(_api.ConfigManager, ndmConfig.Id, logManager); var receiptsPolicies = new ReceiptsPolicies(_providerThresholdsService); IPaymentClaimProcessor paymentClaimProcessor = new PaymentClaimProcessor(_gasPriceService, consumerRepository, paymentClaimRepository, paymentService, coldWalletAddress, timestamper, unitsRangeRlpDecoder, logManager, disableSendingPaymentClaimTransaction); if (instantPaymentClaimVerificationEnabled) { paymentClaimProcessor = new InstantPaymentClaimProcessor(paymentClaimProcessor, paymentClaimRepository, logManager); } var receiptProcessor = new ReceiptProcessor(sessionRepository, _api.AbiEncoder, _api.EthereumEcdsa, logManager); var sessionManager = new SessionManager(sessionRepository, _api.Timestamper, logManager); _depositManager = new DepositManager(depositHandlerFactory, sessionManager, receiptsPolicies, wallet, accountAddress, receiptProcessor, paymentClaimProcessor, consumerRepository, paymentClaimRepository, receiptRepository, sessionRepository, timestamper, _gasPriceService, logManager); _providerService = new ProviderService(_api.ConfigManager, ndmConfig.Id, consumerRepository, dataAssetRepository, depositApprovalRepository, paymentClaimRepository, paymentClaimProcessor, sessionRepository, timestamper, _api.EthereumEcdsa, _api.AbiEncoder, _api.NdmDataPublisher, _gasPriceService, dataAvailabilityValidator, sessionManager, transactionVerifier, _depositManager, refundPolicy, depositService, wallet, blockchainBridge, accountAddress, coldWalletAddress, _api.Enode.PublicKey, ndmConfig.ProviderName, ndmConfig.FilesPath, ndmConfig.FileMaxSize, ndmConfig.BlockConfirmations, paymentService.GasLimit, logManager, skipDepositVerification, backgroundServicesDisabled); _reportService = new ReportService(consumerRepository, paymentClaimRepository); _providerTransactionsService = new ProviderTransactionsService(transactionService, paymentClaimRepository, timestamper, logManager); _providerGasLimitsService = new ProviderGasLimitsService(paymentService); IWebSocketsModule ndmWebSocketsModule = _api.WebSocketsManager.GetModule("ndm"); _api.NdmAccountUpdater = ndmConfig.ProviderColdWalletAddress != null ? new NdmAccountUpdater(ndmWebSocketsModule, _providerService.GetAddress(), _api.MainBlockProcessor, _api.StateProvider, new Address(ndmConfig.ProviderColdWalletAddress)) : new NdmAccountUpdater(ndmWebSocketsModule, _providerService.GetAddress(), _api.MainBlockProcessor, _api.StateProvider); }
public bool Equals(DestinyVendorItemDefinition input) { if (input == null) { return(false); } return (( VendorItemIndex == input.VendorItemIndex || (VendorItemIndex.Equals(input.VendorItemIndex)) ) && ( ItemHash == input.ItemHash || (ItemHash.Equals(input.ItemHash)) ) && ( Quantity == input.Quantity || (Quantity.Equals(input.Quantity)) ) && ( FailureIndexes == input.FailureIndexes || (FailureIndexes != null && FailureIndexes.SequenceEqual(input.FailureIndexes)) ) && ( Currencies == input.Currencies || (Currencies != null && Currencies.SequenceEqual(input.Currencies)) ) && ( RefundPolicy == input.RefundPolicy || (RefundPolicy != null && RefundPolicy.Equals(input.RefundPolicy)) ) && ( RefundTimeLimit == input.RefundTimeLimit || (RefundTimeLimit.Equals(input.RefundTimeLimit)) ) && ( CreationLevels == input.CreationLevels || (CreationLevels != null && CreationLevels.SequenceEqual(input.CreationLevels)) ) && ( DisplayCategoryIndex == input.DisplayCategoryIndex || (DisplayCategoryIndex.Equals(input.DisplayCategoryIndex)) ) && ( CategoryIndex == input.CategoryIndex || (CategoryIndex.Equals(input.CategoryIndex)) ) && ( OriginalCategoryIndex == input.OriginalCategoryIndex || (OriginalCategoryIndex.Equals(input.OriginalCategoryIndex)) ) && ( MinimumLevel == input.MinimumLevel || (MinimumLevel.Equals(input.MinimumLevel)) ) && ( MaximumLevel == input.MaximumLevel || (MaximumLevel.Equals(input.MaximumLevel)) ) && ( Action == input.Action || (Action != null && Action.Equals(input.Action)) ) && ( DisplayCategory == input.DisplayCategory || (DisplayCategory != null && DisplayCategory.Equals(input.DisplayCategory)) ) && ( InventoryBucketHash == input.InventoryBucketHash || (InventoryBucketHash.Equals(input.InventoryBucketHash)) ) && ( VisibilityScope == input.VisibilityScope || (VisibilityScope != null && VisibilityScope.Equals(input.VisibilityScope)) ) && ( PurchasableScope == input.PurchasableScope || (PurchasableScope != null && PurchasableScope.Equals(input.PurchasableScope)) ) && ( Exclusivity == input.Exclusivity || (Exclusivity != null && Exclusivity.Equals(input.Exclusivity)) ) && ( IsOffer == input.IsOffer || (IsOffer != null && IsOffer.Equals(input.IsOffer)) ) && ( IsCrm == input.IsCrm || (IsCrm != null && IsCrm.Equals(input.IsCrm)) ) && ( SortValue == input.SortValue || (SortValue.Equals(input.SortValue)) ) && ( ExpirationTooltip == input.ExpirationTooltip || (ExpirationTooltip != null && ExpirationTooltip.Equals(input.ExpirationTooltip)) ) && ( RedirectToSaleIndexes == input.RedirectToSaleIndexes || (RedirectToSaleIndexes != null && RedirectToSaleIndexes.SequenceEqual(input.RedirectToSaleIndexes)) ) && ( SocketOverrides == input.SocketOverrides || (SocketOverrides != null && SocketOverrides.SequenceEqual(input.SocketOverrides)) ) && ( Unpurchasable == input.Unpurchasable || (Unpurchasable != null && Unpurchasable.Equals(input.Unpurchasable)) )); }