Class: Reel::Spy

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/reel/spy.rb

Overview

Prints out all traffic to a Reel server. Useful for debugging

Defined Under Namespace

Modules: Colors

Instance Method Summary collapse

Constructor Details

#initialize(socket, logger = STDOUT) ⇒ Spy

Returns a new instance of Spy.



10
11
12
13
14
# File 'lib/reel/spy.rb', line 10

def initialize(socket, logger = STDOUT)
  @socket, @logger = socket, logger
  @proto, @port, _, @ip = @socket.peeraddr
  connected
end

Instance Method Details

#closeObject

Close the socket



36
37
38
39
# File 'lib/reel/spy.rb', line 36

def close
  @socket.close
  log :close, "--- #{@ip}:#{@port} (#{@proto}) disconnected\n"
end

#connectedObject

Log a connection to this server



17
18
19
# File 'lib/reel/spy.rb', line 17

def connected
  log :connect, "+++ #{@ip}:#{@port} (#{@proto}) connected\n"
end

#log(type, str) ⇒ Object

Log the given event



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/reel/spy.rb', line 42

def log(type, str)
  case type
  when :connect
    @logger << Colors.green(str)
  when :close
    @logger << Colors.red(str)
  when :read
    @logger << Colors.gold(str)
  when :write
    @logger << Colors.white(str)
  else
    raise "unknown event type: #{type.inspect}"
  end
end

#readpartial(maxlen, outbuf = "") ⇒ Object

Read from the client



22
23
24
25
26
# File 'lib/reel/spy.rb', line 22

def readpartial(maxlen, outbuf = "")
  data = @socket.readpartial(maxlen, outbuf)
  log :read, data
  data
end

#write(string) ⇒ Object Also known as: <<

Write data to the client



29
30
31
32
# File 'lib/reel/spy.rb', line 29

def write(string)
  log :write, string
  @socket << string
end