- edge node store 및 console 업데이트 - node adapters(cli, ollama, vllm, mock) 리팩토링 - node router, run_manager, store 개선 - proto 파일(control.proto, runtime.proto) 및 생성 코드 업데이트 - config 업데이트
47 lines
740 B
Go
47 lines
740 B
Go
package node
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
)
|
|
|
|
type runHandle struct {
|
|
runID string
|
|
adapter string
|
|
target string
|
|
sessionID string
|
|
cancel context.CancelFunc
|
|
done chan struct{}
|
|
}
|
|
|
|
type runManager struct {
|
|
mu sync.RWMutex
|
|
runs map[string]*runHandle
|
|
}
|
|
|
|
func newRunManager() *runManager {
|
|
return &runManager{runs: make(map[string]*runHandle)}
|
|
}
|
|
|
|
func (m *runManager) register(h *runHandle) {
|
|
m.mu.Lock()
|
|
defer m.mu.Unlock()
|
|
m.runs[h.runID] = h
|
|
}
|
|
|
|
func (m *runManager) deregister(runID string) {
|
|
m.mu.Lock()
|
|
defer m.mu.Unlock()
|
|
delete(m.runs, runID)
|
|
}
|
|
|
|
func (m *runManager) cancelRun(runID string) bool {
|
|
m.mu.RLock()
|
|
h, ok := m.runs[runID]
|
|
m.mu.RUnlock()
|
|
if !ok {
|
|
return false
|
|
}
|
|
h.cancel()
|
|
return true
|
|
}
|