Class: Google::Cloud::Debugger::Transmitter
- Inherits:
-
Object
- Object
- Google::Cloud::Debugger::Transmitter
- Defined in:
- lib/google/cloud/debugger/transmitter.rb
Overview
Transmitter
Responsible for submit evaluated breakpoints back to Stackdriver Debugger service asynchronously. It has it's own dedicated child thread, so it doesn't interfere with main Ruby application threads or the debugger agent's thread.
The transmitter is controlled by the debugger agent it belongs to. Debugger agent submits evaluated breakpoint into a thread safe queue, and the transmitter operates directly on the queue along with minimal interaction with the rest debugger agent components
Instance Attribute Summary collapse
-
#agent ⇒ Google::Cloud::Debugger::Agent
The debugger agent this transmiter belongs to.
-
#max_queue_size ⇒ Object
Maxium backlog size for this transmitter's queue.
Instance Method Summary collapse
-
#start ⇒ Object
Starts the transmitter and its worker thread.
-
#stop ⇒ Object
Stops the transmitter and its worker thread.
-
#submit(breakpoint) ⇒ Object
Enqueue an evaluated breakpoints to be submitted by the transmitter.
Instance Attribute Details
#agent ⇒ Google::Cloud::Debugger::Agent
The debugger agent this transmiter belongs to
48 49 50 |
# File 'lib/google/cloud/debugger/transmitter.rb', line 48 def agent @agent end |
#max_queue_size ⇒ Object
Maxium backlog size for this transmitter's queue
52 53 54 |
# File 'lib/google/cloud/debugger/transmitter.rb', line 52 def max_queue_size @max_queue_size end |
Instance Method Details
#start ⇒ Object
Starts the transmitter and its worker thread
66 67 68 |
# File 'lib/google/cloud/debugger/transmitter.rb', line 66 def start async_start end |
#stop ⇒ Object
Stops the transmitter and its worker thread. Once stopped, cannot be started again.
73 74 75 |
# File 'lib/google/cloud/debugger/transmitter.rb', line 73 def stop async_stop end |
#submit(breakpoint) ⇒ Object
Enqueue an evaluated breakpoints to be submitted by the transmitter.
82 83 84 85 86 87 88 89 |
# File 'lib/google/cloud/debugger/transmitter.rb', line 82 def submit breakpoint synchronize do @queue.push breakpoint @lock_cond.broadcast # Discard old entries if queue gets too large @queue.pop while @queue.size > @max_queue_size end end |