waveterm/pkg/service/blockservice/blockservice.go

38 lines
898 B
Go
Raw Normal View History

// Copyright 2024, Command Line Inc.
// SPDX-License-Identifier: Apache-2.0
package blockservice
import (
"fmt"
"strings"
2024-05-22 06:15:11 +02:00
"time"
"github.com/wavetermdev/thenextwave/pkg/blockcontroller"
"github.com/wavetermdev/thenextwave/pkg/tsgen/tsgenmeta"
)
type BlockService struct{}
const DefaultTimeout = 2 * time.Second
func (bs *BlockService) SendCommand_Meta() tsgenmeta.MethodMeta {
return tsgenmeta.MethodMeta{
2024-06-12 02:42:10 +02:00
Desc: "send command to block",
ArgNames: []string{"blockid", "cmd"},
2024-06-12 02:42:10 +02:00
}
}
func (bs *BlockService) SendCommand(blockId string, cmd blockcontroller.BlockCommand) error {
if strings.HasPrefix(cmd.GetCommand(), "controller:") {
bc := blockcontroller.GetBlockController(blockId)
if bc == nil {
return fmt.Errorf("block controller not found for block %q", blockId)
}
bc.InputCh <- cmd
} else {
blockcontroller.ProcessStaticCommand(blockId, cmd)
}
return nil
}