@nivinjoseph/n-eda
Version:
Event Driven Architecture framework
38 lines (26 loc) • 1.34 kB
text/typescript
import { given } from "@nivinjoseph/n-defensive";
import { ApplicationException } from "@nivinjoseph/n-exception";
import { EdaManager } from "../eda-manager.js";
import { Processor } from "./processor.js";
import { WorkItem } from "./scheduler.js";
import { GrpcClient, GrpcClientFactory } from "./grpc-client-factory.js";
export class GrpcProxyProcessor extends Processor
{
private readonly _grpcClient: GrpcClient;
public constructor(manager: EdaManager, grpcClientFactory: GrpcClientFactory)
{
super(manager);
given(manager, "manager").ensure(t => t.grpcProxyEnabled, "GRPC proxy not enabled");
given(grpcClientFactory, "grpcClientFactory").ensureHasValue().ensureIsType(GrpcClientFactory);
this._grpcClient = grpcClientFactory.create();
}
protected async processEvent(workItem: WorkItem): Promise<void>
{
const response = await this._grpcClient.process(workItem);
const { eventName, eventId } = response;
if (eventName !== workItem.eventName || eventId !== workItem.eventId)
throw new ApplicationException(
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
`Error during invocation of GRPC. Details => ${response ? JSON.stringify(response) : "Check logs for details."}`);
}
}