Class: Kward::BufferedPtyOutputSink
- Inherits:
-
Object
- Object
- Kward::BufferedPtyOutputSink
- Defined in:
- lib/kward/pty_output_sink.rb
Overview
Retains output while a detached PTY command runs without terminal ownership.
Instance Attribute Summary collapse
-
#captured_output ⇒ Object
readonly
Returns the value of attribute captured_output.
Instance Method Summary collapse
- #finish ⇒ Object
- #flush ⇒ Object
-
#initialize(max_capture_bytes:) ⇒ BufferedPtyOutputSink
constructor
A new instance of BufferedPtyOutputSink.
- #pre_input_capture_only? ⇒ Boolean
- #transcript_safe? ⇒ Boolean
- #truncated? ⇒ Boolean
- #write(chunk) ⇒ Object
Constructor Details
#initialize(max_capture_bytes:) ⇒ BufferedPtyOutputSink
Returns a new instance of BufferedPtyOutputSink.
9 10 11 12 13 14 |
# File 'lib/kward/pty_output_sink.rb', line 9 def initialize(max_capture_bytes:) @max_capture_bytes = max_capture_bytes @captured_output = +"".b @truncated = false @mutex = Mutex.new end |
Instance Attribute Details
#captured_output ⇒ Object (readonly)
Returns the value of attribute captured_output.
7 8 9 |
# File 'lib/kward/pty_output_sink.rb', line 7 def captured_output @captured_output end |
Instance Method Details
#finish ⇒ Object
33 34 35 |
# File 'lib/kward/pty_output_sink.rb', line 33 def finish nil end |
#flush ⇒ Object
29 30 31 |
# File 'lib/kward/pty_output_sink.rb', line 29 def flush nil end |
#pre_input_capture_only? ⇒ Boolean
41 42 43 |
# File 'lib/kward/pty_output_sink.rb', line 41 def pre_input_capture_only? true end |
#transcript_safe? ⇒ Boolean
37 38 39 |
# File 'lib/kward/pty_output_sink.rb', line 37 def transcript_safe? true end |
#truncated? ⇒ Boolean
45 46 47 |
# File 'lib/kward/pty_output_sink.rb', line 45 def truncated? @mutex.synchronize { @truncated } end |
#write(chunk) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/kward/pty_output_sink.rb', line 16 def write(chunk) value = chunk.to_s.b @mutex.synchronize do remaining = @max_capture_bytes - @captured_output.bytesize if value.bytesize > remaining @captured_output << value.byteslice(0, remaining) if remaining.positive? @truncated = true else @captured_output << value end end end |