Skip to content

Commit

Permalink
Merge 0a634cd into e305f2d
Browse files Browse the repository at this point in the history
  • Loading branch information
kosecki123 committed Aug 20, 2018
2 parents e305f2d + 0a634cd commit 5f1040c
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 29 deletions.
7 changes: 6 additions & 1 deletion src/Actions/Actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ export function shortenAddress(address: string) {
return `${address.slice(0, 6)}...${address.slice(address.length - 5, address.length)}`;
}

export default class Actions {
export default interface IActions {
claim(txRequest: ITxRequest, nextAccount: Address): Promise<ClaimStatus>;
execute(txRequest: ITxRequest): Promise<ExecuteStatus>;
}

export default class Actions implements IActions {
public config: Config;

constructor(config: Config) {
Expand Down
2 changes: 0 additions & 2 deletions src/Actions/Pending.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import Cache from '../Cache';
import { FnSignatures } from '../Enum';
import { ITxRequest } from '../Types';
import BigNumber from 'bignumber.js';
import { ITxRequestPending } from '../Types/ITxRequest';

Expand Down
14 changes: 9 additions & 5 deletions src/Router/Router.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
import Actions from '../Actions';
import Config from '../Config';
import { TxStatus, ClaimStatus, ExecuteStatus, EconomicStrategyStatus } from '../Enum';
import { shouldClaimTx, shouldExecuteTx } from '../EconomicStrategy';

import W3Util from '../Util';
import { Address, ITxRequest } from '../Types';
import IActions from '../Actions';

export default class Router {
public actions: Actions;
export default interface IRouter {
route(txRequest: ITxRequest): Promise<TxStatus>;
}

export default class Router implements IRouter {
public actions: IActions;
public config: Config;
public util: W3Util;
public txRequestStates: object = {};

public transitions: object = {};

constructor(config: Config, actions: any) {
constructor(config: Config, actions: IActions) {
this.actions = actions;
this.config = config;
this.util = config.util;
Expand Down Expand Up @@ -170,7 +174,7 @@ export default class Router {
return localClaim;
}

public async route(txRequest: ITxRequest): Promise<any> {
public async route(txRequest: ITxRequest): Promise<TxStatus> {
let status: TxStatus = this.txRequestStates[txRequest.address] || TxStatus.BeforeClaimWindow;

const statusFunction = this.transitions[status];
Expand Down
32 changes: 11 additions & 21 deletions src/Scanner/Scanner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import { IBlock, IntervalId, ITxRequest } from '../Types';
import { Bucket, IBucketPair, IBuckets, BucketSize } from '../Buckets';
import W3Util from '../Util';
import { CacheStates } from '../Enum';
import { BigNumber } from 'bignumber.js';
import { ITxRequestRaw } from '../Types/ITxRequest';
import IRouter from '../Router';

export default class {
public config: Config;
public util: W3Util;
public scanning: boolean;
public router: any;
public router: IRouter;
public requestFactory: Promise<any>;

// Child Scanners, tracked by the ID of their interval
Expand All @@ -41,7 +41,7 @@ export default class {
* @param {number} ms Milliseconds of the scan interval.
* @param {Config} config The TimeNode Config object.
*/
constructor(config: Config, router: any) {
constructor(config: Config, router: IRouter) {
this.config = config;
this.util = config.util;
this.scanning = false;
Expand Down Expand Up @@ -170,7 +170,7 @@ export default class {
}
}

public async watchRequestsByBucket(bucket: Bucket, previousBucket: Bucket) {
public async watchRequestsByBucket(bucket: Bucket, previousBucket: Bucket): Promise<number> {
const reqFactory = await this.requestFactory;
const handleRequest = this.handleRequest.bind(this);
let currentBucket = previousBucket;
Expand Down Expand Up @@ -232,29 +232,19 @@ export default class {
return true;
}

// TODO meaningful return value
public async scanCache(): Promise<CacheStates> {
if (this.config.cache.isEmpty()) {
return CacheStates.EMPTY; // 1 = cache is empty
}

// Get all transaction requests stored in cache and turn them into TransactionRequest objects.
const allTxRequests = this.config.cache
this.config.cache
.stored()
.filter((address: string) => {
const cached = this.config.cache.get(address);

return cached && cached.windowStart.greaterThan(0);
})
.map((address: string) => this.config.eac.transactionRequest(address));

// Get fresh data on our transaction requests and route them into appropriate action.
const requests = await Promise.all(allTxRequests);
requests.forEach(async (txRequest: ITxRequest) => {
await txRequest.refreshData();

this.router.route(txRequest);
});
.filter((address: string) => this.config.cache.get(address))
.map((address: string) => this.config.eac.transactionRequest(address))
.forEach(async (txRequest: ITxRequest) => {
await txRequest.refreshData();
this.router.route(txRequest);
});

return CacheStates.REFRESHED; //0 = cache loaded successfully
}
Expand Down

0 comments on commit 5f1040c

Please sign in to comment.