Class: Straycall::Reporter::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/straycall/reporter/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(socket, timeout: 0.2) ⇒ Client

Returns a new instance of Client.



8
9
10
11
12
13
14
# File 'lib/straycall/reporter/client.rb', line 8

def initialize(socket, timeout: 0.2)
  @socket = socket
  @reader = Protocol::Reader.new(socket)
  @timeout = timeout
  @mutex = Mutex.new
  @alive = true
end

Instance Method Details

#backtrace(tid) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/straycall/reporter/client.rb', line 29

def backtrace(tid)
  return unless @alive

  @mutex.synchronize do
    @socket.write(Protocol.backtrace_request(tid))
    read_backtrace(tid)
  end
rescue IOError, SystemCallError
  @alive = false
  nil
end

#closeObject



54
55
56
# File 'lib/straycall/reporter/client.rb', line 54

def close
  @socket.close unless @socket.closed?
end

#exampleObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/straycall/reporter/client.rb', line 16

def example
  return @example unless @alive

  @mutex.synchronize do
    @socket.write(Protocol.sync_request)
    read_ack
    @example
  end
rescue IOError, SystemCallError
  @alive = false
  @example
end

#notify_violationObject



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/straycall/reporter/client.rb', line 41

def notify_violation
  @mutex.synchronize do
    if @alive
      @socket.write("VIOLATION\n")
      read_ack
    else
      @socket.write_nonblock("VIOLATION\n", exception: false)
    end
  end
rescue IOError, SystemCallError
  @alive = false
end