44 lines
1.8 KiB
TypeScript
44 lines
1.8 KiB
TypeScript
import { ParsedMessage } from '../message_handler';
|
|
import { OperationHandler } from './operation_handler';
|
|
import { OperationPlugin } from './operation_plugin';
|
|
|
|
export abstract class OperationBase implements OperationPlugin {
|
|
// Shared operation codes
|
|
public static readonly operationCodes = {
|
|
OK: 'OK',
|
|
ERR: 'ERR',
|
|
END: 'END',
|
|
};
|
|
|
|
// Default handler for OK operation
|
|
public static handleOk(parsedMessage: ParsedMessage): ParsedMessage {
|
|
console.log('OK operation received');
|
|
return parsedMessage; // Typically, you would just acknowledge with OK, returning as-is
|
|
}
|
|
|
|
// Default handler for ERR operation
|
|
public static handleErr(parsedMessage: ParsedMessage): ParsedMessage {
|
|
console.log('ERR operation received: ', parsedMessage.metaInfo?.message || 'No error details provided');
|
|
return parsedMessage; // Typically, you would log the error and return
|
|
}
|
|
|
|
// Default handler for END operation
|
|
public static handleEnd(parsedMessage: ParsedMessage): ParsedMessage {
|
|
console.log('END operation received');
|
|
return {
|
|
operationCode: OperationBase.operationCodes.END,
|
|
metaInfo: { message: 'Connection ended.' },
|
|
};
|
|
}
|
|
|
|
// Register the common OK, ERR, and END handlers
|
|
public static registerCommonOperations(operationHandler: OperationHandler): void {
|
|
operationHandler.registerHandler(OperationBase.operationCodes.OK, OperationBase.handleOk);
|
|
operationHandler.registerHandler(OperationBase.operationCodes.ERR, OperationBase.handleErr);
|
|
operationHandler.registerHandler(OperationBase.operationCodes.END, OperationBase.handleEnd);
|
|
}
|
|
|
|
// Abstract register method that will be implemented by subclasses
|
|
public abstract register(operationHandler: OperationHandler): void;
|
|
}
|