feat: P1-3 add heartbeat keep-alive goroutine
- add heartbeat.go with heartbeatIntervalSecs var, SetHeartbeatInterval, runHeartbeat (no build tag, CGO-free) - add heartbeat_test.go with 5 tests covering interval validation and goroutine lifecycle - add StartHeartbeat to clib.go (CGO impl calling xcecli_heartbeat) - remove SetHeartbeatInterval stub from stub.go (now real code in heartbeat.go) - remove TestSetHeartbeatInterval_StubNoOp from stub_funcs_test.go - call SetHeartbeatInterval in OnClusterUpdated to track backend-pushed interval - call backend.StartHeartbeat in cmd/main.go after backend registration
This commit is contained in:
parent
bc3103a6d5
commit
ffc5b20cdb
7 changed files with 125 additions and 12 deletions
|
|
@ -64,6 +64,7 @@ import "C"
|
|||
import (
|
||||
"apiserver/models"
|
||||
logger "apiserver/utils"
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
"unsafe"
|
||||
|
|
@ -153,6 +154,14 @@ func Cleanup() {
|
|||
C.idgen_ctx_fini(&gIDCtx)
|
||||
}
|
||||
|
||||
// StartHeartbeat launches a goroutine that sends periodic xcecli_heartbeat
|
||||
// keep-alive messages to the controller. Stops when ctx is cancelled.
|
||||
func StartHeartbeat(ctx context.Context) {
|
||||
go runHeartbeat(ctx, func(secs int) {
|
||||
C.xcecli_heartbeat(gCtx.ctx, C.int(secs))
|
||||
})
|
||||
}
|
||||
|
||||
// go_push_handler is called by the C library on every incoming request.
|
||||
// It must be exported so the C trampoline can call it from a C thread.
|
||||
//
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue