test(pi): hold packaged rpc confirmation past timeout
This commit is contained in:
@@ -38,6 +38,7 @@ export interface PiConversationWorker {
|
||||
subscribeInvalidation(listener: (error: PiProcessError) => void): () => void;
|
||||
stop(reason: PiWorkerStopReason): Promise<PiWorkerStopResult>;
|
||||
injectFailureForProof?(failure: PiWorkerProofFailure): Promise<void>;
|
||||
delayNextResponseForProof?(commandType: string, delayMs: number): void;
|
||||
}
|
||||
|
||||
export interface PiWorkerSessionBinding {
|
||||
@@ -677,6 +678,21 @@ export class PiWorkerPool {
|
||||
return true;
|
||||
}
|
||||
|
||||
delayNextTopLevelConfirmationForProof(
|
||||
conversationId: string,
|
||||
commandType: string,
|
||||
delayMs: number,
|
||||
): void {
|
||||
const record = this.workers.get(conversationId);
|
||||
if (!record || record.state === 'crashed') {
|
||||
throw new Error('Conversation worker is not available for proof response delay');
|
||||
}
|
||||
if (!record.worker.delayNextResponseForProof) {
|
||||
throw new Error('Conversation worker does not support proof response delay');
|
||||
}
|
||||
record.worker.delayNextResponseForProof(commandType, delayMs);
|
||||
}
|
||||
|
||||
private async performShutdown(): Promise<void> {
|
||||
this.shuttingDown = true;
|
||||
this.shutdownController.abort();
|
||||
|
||||
Reference in New Issue
Block a user