mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-18 06:25:13 +02:00
Fix transmission of async rc commands
This commit is contained in:
@@ -191,12 +191,13 @@ func single_rc_sender(rc *utils.RemoteControlCmd, serializer serializer_func) ([
|
||||
func get_response(do_io func(io_data *rc_io_data) ([]byte, error), io_data *rc_io_data) (ans *Response, err error) {
|
||||
serialized_response, err := do_io(io_data)
|
||||
if err != nil {
|
||||
if err == os.ErrDeadlineExceeded {
|
||||
if errors.Is(err, os.ErrDeadlineExceeded) {
|
||||
io_data.rc.Payload = nil
|
||||
io_data.rc.CancelAsync = true
|
||||
io_data.rc.NoResponse = true
|
||||
io_data.next_block = single_rc_sender
|
||||
_, err = do_io(io_data)
|
||||
io_data.rc.ResetSingleSent()
|
||||
do_io(io_data)
|
||||
err = fmt.Errorf("Timed out waiting for a response from kitty")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -38,6 +38,13 @@ func create_rc_CMD_NAME(args []string) (*utils.RemoteControlCmd, error) {
|
||||
Version: ProtocolVersion,
|
||||
NoResponse: NO_RESPONSE_BASE,
|
||||
}
|
||||
if IS_ASYNC {
|
||||
async_id, err := utils.HumanUUID4()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
rc.Async = async_id
|
||||
}
|
||||
return &rc, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,9 @@ func (self *ShortUUID) Uuid4() (string, error) {
|
||||
|
||||
var HumanUUID *ShortUUID
|
||||
|
||||
func init() {
|
||||
HumanUUID = CreateShortUUID(HUMAN_ALPHABET)
|
||||
func HumanUUID4() (string, error) {
|
||||
if HumanUUID == nil {
|
||||
HumanUUID = CreateShortUUID(HUMAN_ALPHABET)
|
||||
}
|
||||
return HumanUUID.Uuid4()
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ type RemoteControlCmd struct {
|
||||
Payload *interface{} `json:"payload,omitempty"`
|
||||
Timestamp int64 `json:"timestamp,omitempty"`
|
||||
Password string `json:"password,omitempty"`
|
||||
Async string `json:"async,omitempty"`
|
||||
CancelAsync bool `json:"cancel_async,omitempty"`
|
||||
|
||||
single_sent bool
|
||||
@@ -16,6 +17,7 @@ type RemoteControlCmd struct {
|
||||
|
||||
func (self *RemoteControlCmd) SingleSent() bool { return self.single_sent }
|
||||
func (self *RemoteControlCmd) SetSingleSent() { self.single_sent = true }
|
||||
func (self *RemoteControlCmd) ResetSingleSent() { self.single_sent = false }
|
||||
|
||||
type EncryptedRemoteControlCmd struct {
|
||||
Version [3]int `json:"version"`
|
||||
|
||||
Reference in New Issue
Block a user