fix block controller status (add version) (#1430)

This commit is contained in:
Mike Sawka 2024-12-06 19:39:58 -08:00 committed by GitHub
parent f858d3ba0f
commit ac8dc25ead
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 6 deletions

View File

@ -311,12 +311,18 @@ class TermViewModel implements ViewModel {
} }
updateShellProcStatus(fullStatus: BlockControllerRuntimeStatus) { updateShellProcStatus(fullStatus: BlockControllerRuntimeStatus) {
globalStore.set(this.shellProcFullStatus, fullStatus); if (fullStatus == null) {
const status = fullStatus?.shellprocstatus ?? "init"; return;
if (status == "running") { }
this.termRef.current?.setIsRunning?.(true); const curStatus = globalStore.get(this.shellProcFullStatus);
} else { if (curStatus == null || curStatus.version < fullStatus.version) {
this.termRef.current?.setIsRunning?.(false); globalStore.set(this.shellProcFullStatus, fullStatus);
const status = fullStatus?.shellprocstatus ?? "init";
if (status == "running") {
this.termRef.current?.setIsRunning?.(true);
} else {
this.termRef.current?.setIsRunning?.(false);
}
} }
} }

View File

@ -56,6 +56,7 @@ declare global {
// blockcontroller.BlockControllerRuntimeStatus // blockcontroller.BlockControllerRuntimeStatus
type BlockControllerRuntimeStatus = { type BlockControllerRuntimeStatus = {
blockid: string; blockid: string;
version: number;
shellprocstatus?: string; shellprocstatus?: string;
shellprocconnname?: string; shellprocconnname?: string;
shellprocexitcode: number; shellprocexitcode: number;

View File

@ -79,10 +79,12 @@ type BlockController struct {
ShellProcStatus string ShellProcStatus string
ShellProcExitCode int ShellProcExitCode int
RunLock *atomic.Bool RunLock *atomic.Bool
StatusVersion int
} }
type BlockControllerRuntimeStatus struct { type BlockControllerRuntimeStatus struct {
BlockId string `json:"blockid"` BlockId string `json:"blockid"`
Version int `json:"version"`
ShellProcStatus string `json:"shellprocstatus,omitempty"` ShellProcStatus string `json:"shellprocstatus,omitempty"`
ShellProcConnName string `json:"shellprocconnname,omitempty"` ShellProcConnName string `json:"shellprocconnname,omitempty"`
ShellProcExitCode int `json:"shellprocexitcode"` ShellProcExitCode int `json:"shellprocexitcode"`
@ -97,6 +99,8 @@ func (bc *BlockController) WithLock(f func()) {
func (bc *BlockController) GetRuntimeStatus() *BlockControllerRuntimeStatus { func (bc *BlockController) GetRuntimeStatus() *BlockControllerRuntimeStatus {
var rtn BlockControllerRuntimeStatus var rtn BlockControllerRuntimeStatus
bc.WithLock(func() { bc.WithLock(func() {
bc.StatusVersion++
rtn.Version = bc.StatusVersion
rtn.BlockId = bc.BlockId rtn.BlockId = bc.BlockId
rtn.ShellProcStatus = bc.ShellProcStatus rtn.ShellProcStatus = bc.ShellProcStatus
if bc.ShellProc != nil { if bc.ShellProc != nil {