root/lang/ruby/ssb/trunk/libs/ssb/time_stamper.rb @ 2707

Revision 2707, 0.9 kB (checked in by coji, 5 years ago)

lang/ruby/ssb: oops... orz

  • Property svn:mime-type set to text/x-ruby; charset=utf-8
  • Property svn:eol-style set to native
  • Property svn:keywords set to Id Date Author Rev URL
Line 
1# time_stamper.rb - process time stamp
2#
3# Author:: MIZOGUCHI Coji <mizoguchi.coji at gmail.com>
4# License:: Distributes under the same terms as Ruby
5#
6# $Id$
7#
8module SSB
9  class TimeStamper
10    attr_reader :log
11
12    # { span_label => [stamp_from, stamp_to], ... }
13    def initialize(span_defs = nil)
14      @span_defs = Hash.new
15      @span_defs.update(span_defs) unless span_defs.nil?
16      @log = Hash.new
17    end
18
19    def span_labels
20      @span_defs.keys
21    end
22
23    def span(label)
24      diff(@span_defs[label][0], @span_defs[label][1])
25    end
26
27    def stamp(stamp, time = Time.now)
28      @log[stamp] = time
29    end
30
31    def diff(stamp_from, stamp_to)
32      ((@log[stamp_to].to_f - @log[stamp_from].to_f)*1000).to_i
33    end
34
35    def count
36      @log.size
37    end
38
39    def[](label)
40      @log[label]
41    end
42
43    def method_missing(msg, *args)
44      if span_labels.include?(msg.to_sym)
45        span(msg.to_sym)
46      else
47        super
48      end
49    end
50  end
51end
Note: See TracBrowser for help on using the browser.