Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | 14x 14x 2x 1x 1x 14x 2x 1x 1x 14x 2x 1x 1x 14x 2x 1x 1x 14x 2x 1x 1x 14x | import type { ClusterConfig } from '@metamask/ocap-kernel';
import { useCallback } from 'react';
import { usePanelContext } from '../context/PanelContext.tsx';
/**
* Hook for handling kernel actions.
*
* @returns Kernel actions.
*/
export function useKernelActions(): {
terminateAllVats: () => void;
collectGarbage: () => void;
clearState: () => void;
reload: () => void;
launchSubcluster: (config: ClusterConfig) => void;
} {
const { callKernelMethod, logMessage } = usePanelContext();
/**
* Terminates all vats.
*/
const terminateAllVats = useCallback(() => {
callKernelMethod({
method: 'terminateAllVats',
params: [],
})
.then(() => logMessage('All vats terminated', 'success'))
.catch(() => logMessage('Failed to terminate all vats', 'error'));
}, [callKernelMethod, logMessage]);
/**
* Collects garbage.
*/
const collectGarbage = useCallback(() => {
callKernelMethod({
method: 'collectGarbage',
params: [],
})
.then(() => logMessage('Garbage collected', 'success'))
.catch((problem) =>
logMessage(`Failed to collect garbage ${problem}`, 'error'),
);
}, [callKernelMethod, logMessage]);
/**
* Clears the kernel state.
*/
const clearState = useCallback(() => {
callKernelMethod({
method: 'clearState',
params: [],
})
.then(() => logMessage('State cleared', 'success'))
.catch((error: Error) =>
logMessage(`Failed to clear state: ${error.message}`, 'error'),
);
}, [callKernelMethod, logMessage]);
/**
* Reloads the kernel
*/
const reload = useCallback(() => {
callKernelMethod({
method: 'reload',
params: [],
})
.then(() => logMessage('Kernel reloaded', 'success'))
.catch(() => logMessage('Failed to reload', 'error'));
}, [callKernelMethod, logMessage]);
/**
* Launches a subcluster.
*/
const launchSubcluster = useCallback(
(config: ClusterConfig) => {
callKernelMethod({
method: 'launchSubcluster',
params: { config },
})
.then(() => logMessage('Subcluster launched', 'success'))
.catch((error) =>
logMessage(`Failed to launch subcluster: ${error.message}`, 'error'),
);
},
[callKernelMethod, logMessage],
);
return {
terminateAllVats,
collectGarbage,
clearState,
reload,
launchSubcluster,
};
}
|