Skip to content

Commit

Permalink
feat: Implement CircuitBreakerPolicy
Browse files Browse the repository at this point in the history
Closes #193.
  • Loading branch information
luczsoma committed Mar 22, 2020
1 parent 794047d commit 1351ea1
Show file tree
Hide file tree
Showing 21 changed files with 2,334 additions and 262 deletions.
267 changes: 228 additions & 39 deletions README.md

Large diffs are not rendered by default.

131 changes: 131 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,20 @@
"devDependencies": {
"@commitlint/cli": "^8.3.5",
"@commitlint/travis-cli": "^8.3.5",
"@diplomatiq/eslint-config-tslib": "^2.5.0",
"@types/chai": "^4.2.11",
"@types/mocha": "^7.0.2",
"@types/node": "^13.9.2",
"@types/sinon": "^7.5.2",
"chai": "^4.2.0",
"conventional-changelog-cli": "^2.0.31",
"cross-env": "^7.0.2",
"@diplomatiq/eslint-config-tslib": "^2.5.0",
"esm": "^3.2.25",
"husky": "^4.2.3",
"mocha": "^7.1.1",
"nyc": "^15.0.0",
"prettier": "^1.19.1",
"sinon": "^9.0.1",
"source-map-support": "^0.5.16",
"ts-node": "^8.8.1",
"typescript": "^3.8.3"
Expand Down
20 changes: 20 additions & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,26 @@
export { RandomGenerator } from './interfaces/randomGenerator';
export { Policy } from './policies/policy';
export { ProactivePolicy } from './policies/proactive/proactivePolicy';
export { ExecutionException } from './policies/proactive/timeoutPolicy/executionException';
export { OnTimeoutFn } from './policies/proactive/timeoutPolicy/onTimeoutFn';
export { TimeoutException } from './policies/proactive/timeoutPolicy/timeoutException';
export { TimeoutPolicy } from './policies/proactive/timeoutPolicy/timeoutPolicy';
export { BrokenCircuitException } from './policies/reactive/circuitBreakerPolicy/brokenCircuitException';
export { CircuitBreakerPolicy } from './policies/reactive/circuitBreakerPolicy/circuitBreakerPolicy';
export { CircuitState } from './policies/reactive/circuitBreakerPolicy/circuitState';
export { IsolatedCircuitException } from './policies/reactive/circuitBreakerPolicy/isolatedCircuitException';
export { OnAttemptingCloseFn } from './policies/reactive/circuitBreakerPolicy/onAttemptingCloseFn';
export { OnCloseFn } from './policies/reactive/circuitBreakerPolicy/onCloseFn';
export { OnIsolateFn } from './policies/reactive/circuitBreakerPolicy/onIsolateFn';
export { OnOpenFn } from './policies/reactive/circuitBreakerPolicy/onOpenFn';
export { FallbackChainExhaustedException } from './policies/reactive/fallbackPolicy/fallbackChainExhaustedException';
export { FallbackChainLink } from './policies/reactive/fallbackPolicy/fallbackChainLink';
export { FallbackPolicy } from './policies/reactive/fallbackPolicy/fallbackPolicy';
export { OnFallbackFn } from './policies/reactive/fallbackPolicy/onFallbackFn';
export { ReactivePolicy } from './policies/reactive/reactivePolicy';
export { BackoffStrategy } from './policies/reactive/retryPolicy/backoffStrategy';
export { BackoffStrategyFactory } from './policies/reactive/retryPolicy/backoffStrategyFactory';
export { OnRetryFn } from './policies/reactive/retryPolicy/onRetryFn';
export { RetryPolicy } from './policies/reactive/retryPolicy/retryPolicy';
export { OnFinallyFn } from './types/onFinallyFn';
export { Predicate } from './types/predicate';
1 change: 1 addition & 0 deletions src/policies/proactive/timeoutPolicy/onTimeoutFn.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export type OnTimeoutFn = (timedOutAfter: number) => void | Promise<void>;
8 changes: 3 additions & 5 deletions src/policies/proactive/timeoutPolicy/timeoutPolicy.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { ProactivePolicy } from '../proactivePolicy';
import { ExecutionException } from './executionException';
import { OnTimeoutFn } from './onTimeoutFn';
import { TimeoutException } from './timeoutException';

export class TimeoutPolicy<ResultType> extends ProactivePolicy<ResultType> {
private timeoutMs: number | undefined;
private readonly onTimeoutFns: Array<(timedOutAfter: number) => void | Promise<void>> = [];
private executing = 0;
private readonly onTimeoutFns: OnTimeoutFn[] = [];

public constructor() {
super();
}
private executing = 0;

public timeoutAfter(timeoutMs: number): void {
if (!Number.isInteger(timeoutMs)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export class BrokenCircuitException extends Error {}
Loading

0 comments on commit 1351ea1

Please sign in to comment.