Class: ExecJS::Xtrn::Child

Inherits:
Object
  • Object
show all
Defined in:
lib/execjs/xtrn/child.rb

Constant Summary collapse

@@stats =

children

{c: 0}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.statsObject



28
29
30
# File 'lib/execjs/xtrn/child.rb', line 28

def self.stats
  @@stats.dup
end

Instance Method Details

#say(obj) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/execjs/xtrn/child.rb', line 8

def say(obj)
  delta={
    n: 1, # say calls
    o: 0, # out bytes
    i: 0, # in bytes
    t: Time.now # time spent
  }
  @stdin.puts delta[:o]=JSON.generate([obj])[1...-1]
  i=@stdout.gets
  i.force_encoding 'UTF-8'

  delta[:t]=Time.now-delta[:t]
  delta[:i]=i.length
  delta[:o]=delta[:o].length
  @stats.each{|var| delta.each{|k, v| var[k]||=0; var[k]+=v}}
  @stats.reject!{|var| var.delete :once }

  JSON.load i
end

#stats(*recs) ⇒ Object



32
33
34
35
# File 'lib/execjs/xtrn/child.rb', line 32

def stats(*recs)
  @stats+=recs
  @stats[0].dup
end