Class: GrpcKit::Session::Duration
- Inherits:
-
Struct
- Object
- Struct
- GrpcKit::Session::Duration
- Defined in:
- lib/grpc_kit/session/duration.rb
Constant Summary collapse
- MAX_TIMEOUT =
10**9 - 1
- HOUR =
60 * 60
- MIN =
60- MILL_SEC =
10**-3
- MICRO_SEC =
10**-6
- NANO_SEC =
10**-9
Instance Attribute Summary collapse
-
#msec ⇒ Object
Returns the value of attribute msec.
-
#nsec ⇒ Object
Returns the value of attribute nsec.
-
#sec ⇒ Object
Returns the value of attribute sec.
-
#usec ⇒ Object
Returns the value of attribute usec.
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#msec ⇒ Object
Returns the value of attribute msec
5 6 7 |
# File 'lib/grpc_kit/session/duration.rb', line 5 def msec @msec end |
#nsec ⇒ Object
Returns the value of attribute nsec
5 6 7 |
# File 'lib/grpc_kit/session/duration.rb', line 5 def nsec @nsec end |
#sec ⇒ Object
Returns the value of attribute sec
5 6 7 |
# File 'lib/grpc_kit/session/duration.rb', line 5 def sec @sec end |
#usec ⇒ Object
Returns the value of attribute usec
5 6 7 |
# File 'lib/grpc_kit/session/duration.rb', line 5 def usec @usec end |
Class Method Details
.decode(value) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/grpc_kit/session/duration.rb', line 14 def self.decode(value) size = value.size if size < 2 raise "Invalid format: too short #{value}" end unit = value.slice!(-1, 1) d = Duration.new(0, 0, 0, 0) n = Integer(value) case unit when 'H' d.sec = n * HOUR when 'M' d.sec = n * MIN when 'S' d.sec = n when 'm' d.msec = n when 'u' d.usec = n when 'n' d.nsec = n else raise "Invalid unit `#{unit}`: #{value + unit} " end d end |
.from_numeric(val) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/grpc_kit/session/duration.rb', line 66 def self.from_numeric(val) case val when nil when Numeric if val < 0 Duration.new(MAX_TIMEOUT, 0, 0, 0) elsif val == 0 Duration.new(0, 0, 0, 0) else Duration.new(val, 0, 0, 0) end else raise "Cannot make timeout from #{val}" end end |
Instance Method Details
#to_s ⇒ Object
TODO
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/grpc_kit/session/duration.rb', line 83 def to_s if nsec && (nsec != 0) "#{nsec}n" elsif usec && (usec != 0) "#{usec}u" elsif msec && (msec != 0) "#{msec}m" elsif sec "#{sec}S" end end |
#to_timeout ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/grpc_kit/session/duration.rb', line 43 def to_timeout v = 0 if nsec && (nsec != 0) v += (NANO_SEC * nsec) end if usec && (usec != 0) v += (MICRO_SEC * usec) end if msec && (msec != 0) v += (MILL_SEC * msec) end if sec v += sec end v end |