@nivinjoseph/n-eda
Version:
Event Driven Architecture framework
66 lines (51 loc) • 2.39 kB
text/typescript
// import { EventBus } from "../event-bus";
// import { EdaEvent } from "../eda-event";
// import { given } from "@nivinjoseph/n-defensive";
// import { ObjectDisposedException } from "@nivinjoseph/n-exception";
// import { EdaManager } from "../eda-manager";
// // public
// export class InMemoryEventBus implements EventBus
// {
// private _isDisposed = false;
// private _onPublish: (topic: string, partition: number, event: EdaEvent) => void = null as any;
// private _manager: EdaManager = null as any;
// public initialize(manager: EdaManager): void
// {
// given(manager, "manager").ensureHasValue().ensureIsObject().ensureIsType(EdaManager);
// given(this, "this").ensure(t => !t._manager, "already initialized");
// this._manager = manager;
// }
// public async publish(topic: string, event: EdaEvent): Promise<void>
// {
// if (this._isDisposed)
// throw new ObjectDisposedException(this);
// given(this, "this")
// .ensure(t => !!t._manager, "not initialized")
// .ensure(t => !!t._onPublish, "onPublish callback has not been registered");
// given(topic, "topic").ensureHasValue().ensureIsString()
// .ensure(t => this._manager.topics.some(u => u.name === t));
// given(event, "event").ensureHasValue().ensureIsObject()
// .ensureHasStructure({
// id: "string",
// name: "string",
// });
// if (!this._manager.eventMap.has(event.name))
// return;
// this._onPublish(topic, this._manager.mapToPartition(topic, event), event);
// }
// public onPublish(callback: (topic: string, partition: number, event: EdaEvent) => void): void
// {
// if (this._isDisposed)
// throw new ObjectDisposedException(this);
// given(callback, "callback").ensureHasValue().ensureIsFunction();
// given(this, "this").ensure(t => !t._onPublish, "setting onPublish callback more than once");
// this._onPublish = callback;
// }
// public async dispose(): Promise<void>
// {
// if (this._isDisposed)
// return;
// this._isDisposed = true;
// this._onPublish = null as any;
// }
// }