diff --git a/Framework/NethereumWorkflow/NethereumInteraction.cs b/Framework/NethereumWorkflow/NethereumInteraction.cs index f965c35..01f26bf 100644 --- a/Framework/NethereumWorkflow/NethereumInteraction.cs +++ b/Framework/NethereumWorkflow/NethereumInteraction.cs @@ -117,6 +117,7 @@ namespace NethereumWorkflow } return new BlockInterval( + timeRange: timeRange, from: fromBlock.Value, to: toBlock.Value ); diff --git a/Framework/Utils/BlockInterval.cs b/Framework/Utils/BlockInterval.cs index 79229bf..2daa8f2 100644 --- a/Framework/Utils/BlockInterval.cs +++ b/Framework/Utils/BlockInterval.cs @@ -2,7 +2,7 @@ { public class BlockInterval { - public BlockInterval(ulong from, ulong to) + public BlockInterval(TimeRange timeRange, ulong from, ulong to) { if (from < to) { @@ -14,10 +14,12 @@ From = to; To = from; } + TimeRange = timeRange; } public ulong From { get; } public ulong To { get; } + public TimeRange TimeRange { get; } public override string ToString() { diff --git a/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainEvents.cs b/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainEvents.cs index b7a6e24..51a84d0 100644 --- a/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainEvents.cs +++ b/ProjectPlugins/CodexContractsPlugin/ChainMonitor/ChainEvents.cs @@ -1,7 +1,54 @@ -namespace CodexContractsPlugin.ChainMonitor +using CodexContractsPlugin.Marketplace; +using Utils; + +namespace CodexContractsPlugin.ChainMonitor { public class ChainEvents { + private ChainEvents( + BlockInterval blockInterval, + Request[] requests, + RequestFulfilledEventDTO[] fulfilled, + RequestCancelledEventDTO[] cancelled, + SlotFilledEventDTO[] slotFilled, + SlotFreedEventDTO[] slotFreed + ) + { + BlockInterval = blockInterval; + Requests = requests; + Fulfilled = fulfilled; + Cancelled = cancelled; + SlotFilled = slotFilled; + SlotFreed = slotFreed; + } + public BlockInterval BlockInterval { get; } + public Request[] Requests { get; } + public RequestFulfilledEventDTO[] Fulfilled { get; } + public RequestCancelledEventDTO[] Cancelled { get; } + public SlotFilledEventDTO[] SlotFilled { get; } + public SlotFreedEventDTO[] SlotFreed { get; } + + public static ChainEvents FromBlockInterval(ICodexContracts contracts, BlockInterval blockInterval) + { + return FromContractEvents(contracts.GetEvents(blockInterval)); + } + + public static ChainEvents FromTimeRange(ICodexContracts contracts, TimeRange timeRange) + { + return FromContractEvents(contracts.GetEvents(timeRange)); + } + + public static ChainEvents FromContractEvents(ICodexContractsEvents events) + { + return new ChainEvents( + events.BlockInterval, + events.GetStorageRequests(), + events.GetRequestFulfilledEvents(), + events.GetRequestCancelledEvents(), + events.GetSlotFilledEvents(), + events.GetSlotFreedEvents() + ); + } } } diff --git a/ProjectPlugins/CodexContractsPlugin/CodexContractsEvents.cs b/ProjectPlugins/CodexContractsPlugin/CodexContractsEvents.cs index 4b2c2f6..cf7b2d7 100644 --- a/ProjectPlugins/CodexContractsPlugin/CodexContractsEvents.cs +++ b/ProjectPlugins/CodexContractsPlugin/CodexContractsEvents.cs @@ -9,6 +9,7 @@ namespace CodexContractsPlugin { public interface ICodexContractsEvents { + BlockInterval BlockInterval { get; } Request[] GetStorageRequests(); RequestFulfilledEventDTO[] GetRequestFulfilledEvents(); RequestCancelledEventDTO[] GetRequestCancelledEvents(); @@ -21,19 +22,20 @@ namespace CodexContractsPlugin private readonly ILog log; private readonly IGethNode gethNode; private readonly CodexContractsDeployment deployment; - private readonly BlockInterval blockInterval; public CodexContractsEvents(ILog log, IGethNode gethNode, CodexContractsDeployment deployment, BlockInterval blockInterval) { this.log = log; this.gethNode = gethNode; this.deployment = deployment; - this.blockInterval = blockInterval; + BlockInterval = blockInterval; } + + public BlockInterval BlockInterval { get; } public Request[] GetStorageRequests() { - var events = gethNode.GetEvents(deployment.MarketplaceAddress, blockInterval); + var events = gethNode.GetEvents(deployment.MarketplaceAddress, BlockInterval); var i = new ContractInteractions(log, gethNode); return events .Select(e => @@ -49,7 +51,7 @@ namespace CodexContractsPlugin public RequestFulfilledEventDTO[] GetRequestFulfilledEvents() { - var events = gethNode.GetEvents(deployment.MarketplaceAddress, blockInterval); + var events = gethNode.GetEvents(deployment.MarketplaceAddress, BlockInterval); return events.Select(e => { var result = e.Event; @@ -60,7 +62,7 @@ namespace CodexContractsPlugin public RequestCancelledEventDTO[] GetRequestCancelledEvents() { - var events = gethNode.GetEvents(deployment.MarketplaceAddress, blockInterval); + var events = gethNode.GetEvents(deployment.MarketplaceAddress, BlockInterval); return events.Select(e => { var result = e.Event; @@ -71,7 +73,7 @@ namespace CodexContractsPlugin public SlotFilledEventDTO[] GetSlotFilledEvents() { - var events = gethNode.GetEvents(deployment.MarketplaceAddress, blockInterval); + var events = gethNode.GetEvents(deployment.MarketplaceAddress, BlockInterval); return events.Select(e => { var result = e.Event; @@ -83,7 +85,7 @@ namespace CodexContractsPlugin public SlotFreedEventDTO[] GetSlotFreedEvents() { - var events = gethNode.GetEvents(deployment.MarketplaceAddress, blockInterval); + var events = gethNode.GetEvents(deployment.MarketplaceAddress, BlockInterval); return events.Select(e => { var result = e.Event;