fork download
  1. require 'ipaddr'
  2. require 'tmstd/assertion'
  3.  
  4. ASSERT = ::TmStd::Assertion
  5.  
  6.  
  7.  
  8. module ConnectionState
  9. class Abstract; end
  10.  
  11.  
  12. class Connecting < Abstract
  13. attr_reader :when_connected
  14.  
  15. def initialize(when_connected)
  16. ASSERT.opt_kind_of(when_connected, Time)
  17.  
  18. @when_connected = when_connected
  19. end
  20. end
  21.  
  22.  
  23.  
  24. class Connected < Abstract
  25. class LastPing
  26. attr_reader :time
  27. attr_reader :id
  28.  
  29. def initialize(time, id)
  30. ASSERT.kind_of(when_connected, Time)
  31. ASSERT.kind_of(id, Integer)
  32.  
  33. @time = time
  34. @id = id
  35. end
  36. end
  37.  
  38.  
  39.  
  40. attr_reader :last_ping
  41. attr_reader :sesseion_id
  42.  
  43. def initialize(last_ping, sesseion_id)
  44. ASSERT.kind_of(last_ping, LastPing)
  45. ASSERT.kind_of(sesseion_id, Integer)
  46.  
  47. @last_ping = last_ping
  48. @sesseion_id = sesseion_id
  49. end
  50. end
  51.  
  52.  
  53.  
  54. class Disconnected < Abstract
  55. attr_reader :when_disconnected
  56.  
  57. def initialize(when_disconnected)
  58. ASSERT.opt_kind_of(when_disconnected, Time)
  59.  
  60. @when_disconnected = when_disconnected
  61. end
  62. end
  63. end
  64.  
  65.  
  66.  
  67. class ConnectionInfo
  68. attr_reader :connection_state
  69. attr_reader :inet_addr
  70.  
  71. def initialize(connection_state, inet_addr)
  72. ASSERT.kind_of(connection_state, ConnectionState::Abstract)
  73. ASSERT.kind_of(inet_addr, IPAdder)
  74.  
  75. @connection_state = connection_state
  76. @inet_addr = inet_addr
  77. end
  78. end
  79.  
Runtime error #stdin #stdout #stderr 0.03s 10656KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
/usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- tmstd/assertion (LoadError)
	from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from prog.rb:2:in `<main>'