Use Unsafe rather than Dangerous to be consistent
This commit is contained in:
parent
081390b5a2
commit
a7f6105393
@ -72,7 +72,7 @@ func do_chunked_io(io_data *rc_io_data) (serialized_response []byte, err error)
|
|||||||
|
|
||||||
queue_escape_code := func(data []byte) {
|
queue_escape_code := func(data []byte) {
|
||||||
lp.QueueWriteString(cmd_escape_code_prefix)
|
lp.QueueWriteString(cmd_escape_code_prefix)
|
||||||
lp.QueueWriteBytesDangerous(data)
|
lp.UnsafeQueueWriteBytes(data)
|
||||||
lp.QueueWriteString(cmd_escape_code_suffix)
|
lp.QueueWriteString(cmd_escape_code_suffix)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -172,7 +172,7 @@ func (self *Loop) QueueWriteString(data string) IdType {
|
|||||||
|
|
||||||
// This is dangerous as it is upto the calling code
|
// This is dangerous as it is upto the calling code
|
||||||
// to ensure the data in the underlying array does not change
|
// to ensure the data in the underlying array does not change
|
||||||
func (self *Loop) QueueWriteBytesDangerous(data []byte) IdType {
|
func (self *Loop) UnsafeQueueWriteBytes(data []byte) IdType {
|
||||||
self.write_msg_id_counter++
|
self.write_msg_id_counter++
|
||||||
msg := write_msg{bytes: data, id: self.write_msg_id_counter}
|
msg := write_msg{bytes: data, id: self.write_msg_id_counter}
|
||||||
self.add_write_to_pending_queue(&msg)
|
self.add_write_to_pending_queue(&msg)
|
||||||
@ -182,7 +182,7 @@ func (self *Loop) QueueWriteBytesDangerous(data []byte) IdType {
|
|||||||
func (self *Loop) QueueWriteBytesCopy(data []byte) IdType {
|
func (self *Loop) QueueWriteBytesCopy(data []byte) IdType {
|
||||||
d := make([]byte, len(data))
|
d := make([]byte, len(data))
|
||||||
copy(d, data)
|
copy(d, data)
|
||||||
return self.QueueWriteBytesDangerous(d)
|
return self.UnsafeQueueWriteBytes(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Loop) ExitCode() int {
|
func (self *Loop) ExitCode() int {
|
||||||
|
|||||||
@ -229,7 +229,7 @@ func (self *Loop) run() (err error) {
|
|||||||
} else {
|
} else {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
self.QueueWriteBytesDangerous(self.terminal_options.SetStateEscapeCodes())
|
self.QueueWriteString(self.terminal_options.SetStateEscapeCodes())
|
||||||
needs_reset_escape_codes := true
|
needs_reset_escape_codes := true
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
@ -241,7 +241,7 @@ func (self *Loop) run() (err error) {
|
|||||||
self.QueueWriteString(finalizer)
|
self.QueueWriteString(finalizer)
|
||||||
}
|
}
|
||||||
if needs_reset_escape_codes {
|
if needs_reset_escape_codes {
|
||||||
self.QueueWriteBytesDangerous(self.terminal_options.ResetStateEscapeCodes())
|
self.QueueWriteString(self.terminal_options.ResetStateEscapeCodes())
|
||||||
}
|
}
|
||||||
// flush queued data and wait for it to be written for a timeout, then wait for writer to shutdown
|
// flush queued data and wait for it to be written for a timeout, then wait for writer to shutdown
|
||||||
flush_writer(w_w, tty_write_channel, write_done_channel, self.pending_writes, 2*time.Second)
|
flush_writer(w_w, tty_write_channel, write_done_channel, self.pending_writes, 2*time.Second)
|
||||||
@ -262,7 +262,7 @@ func (self *Loop) run() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.on_SIGTSTP = func() error {
|
self.on_SIGTSTP = func() error {
|
||||||
write_id := self.QueueWriteBytesDangerous(self.terminal_options.ResetStateEscapeCodes())
|
write_id := self.QueueWriteString(self.terminal_options.ResetStateEscapeCodes())
|
||||||
needs_reset_escape_codes = false
|
needs_reset_escape_codes = false
|
||||||
err := self.wait_for_write_to_complete(write_id, tty_write_channel, write_done_channel, 2*time.Second)
|
err := self.wait_for_write_to_complete(write_id, tty_write_channel, write_done_channel, 2*time.Second)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -276,7 +276,7 @@ func (self *Loop) run() (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
write_id = self.QueueWriteBytesDangerous(self.terminal_options.SetStateEscapeCodes())
|
write_id = self.QueueWriteString(self.terminal_options.SetStateEscapeCodes())
|
||||||
needs_reset_escape_codes = true
|
needs_reset_escape_codes = true
|
||||||
err = self.wait_for_write_to_complete(write_id, tty_write_channel, write_done_channel, 2*time.Second)
|
err = self.wait_for_write_to_complete(write_id, tty_write_channel, write_done_channel, 2*time.Second)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@ -92,7 +92,7 @@ func reset_modes(sb *strings.Builder, modes ...Mode) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *TerminalStateOptions) SetStateEscapeCodes() []byte {
|
func (self *TerminalStateOptions) SetStateEscapeCodes() string {
|
||||||
var sb strings.Builder
|
var sb strings.Builder
|
||||||
sb.Grow(256)
|
sb.Grow(256)
|
||||||
sb.WriteString(S7C1T)
|
sb.WriteString(S7C1T)
|
||||||
@ -128,10 +128,10 @@ func (self *TerminalStateOptions) SetStateEscapeCodes() []byte {
|
|||||||
sb.WriteString(MOUSE_MOVE_TRACKING.EscapeCodeToSet())
|
sb.WriteString(MOUSE_MOVE_TRACKING.EscapeCodeToSet())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return []byte(sb.String())
|
return sb.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *TerminalStateOptions) ResetStateEscapeCodes() []byte {
|
func (self *TerminalStateOptions) ResetStateEscapeCodes() string {
|
||||||
var sb strings.Builder
|
var sb strings.Builder
|
||||||
sb.Grow(64)
|
sb.Grow(64)
|
||||||
sb.WriteString("\033[<u")
|
sb.WriteString("\033[<u")
|
||||||
@ -145,5 +145,5 @@ func (self *TerminalStateOptions) ResetStateEscapeCodes() []byte {
|
|||||||
sb.WriteString(RESTORE_CURSOR)
|
sb.WriteString(RESTORE_CURSOR)
|
||||||
}
|
}
|
||||||
sb.WriteString(RESTORE_COLORS)
|
sb.WriteString(RESTORE_COLORS)
|
||||||
return []byte(sb.String())
|
return sb.String()
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user