module ConnectionState
class Abstract; end
class Connecting < Abstract
attr_reader :when_connected
def initialize(when_connected)
@when_connected = when_connected
end
end
class Connected < Abstract
class LastPing
attr_reader :time
attr_reader :id
def initialize(time, id)
@time = time
@id = id
end
end
attr_reader :last_ping
attr_reader :sesseion_id
def initialize(last_ping, sesseion_id)
@last_ping = last_ping
@sesseion_id = sesseion_id
end
end
class Disconnected < Abstract
attr_reader :when_disconnected
def initialize(when_disconnected)
@when_disconnected = when_disconnected
end
end
end
class ConnectionInfo
attr_reader :connection_state
attr_reader :inet_addr
def initialize(connection_state, inet_addr)
@connection_state = connection_state
@inet_addr = inet_addr
end
end
ConnectionInfo.new("Hello", "World")
bW9kdWxlIENvbm5lY3Rpb25TdGF0ZQoJY2xhc3MgQWJzdHJhY3Q7IGVuZAoKCgljbGFzcyBDb25uZWN0aW5nIDwgQWJzdHJhY3QKCQlhdHRyX3JlYWRlciA6d2hlbl9jb25uZWN0ZWQKCgkJZGVmIGluaXRpYWxpemUod2hlbl9jb25uZWN0ZWQpCgkJCUB3aGVuX2Nvbm5lY3RlZCA9IHdoZW5fY29ubmVjdGVkCgkJZW5kCgllbmQKCgoKCWNsYXNzIENvbm5lY3RlZCA8IEFic3RyYWN0CgkJY2xhc3MgTGFzdFBpbmcKCQkJYXR0cl9yZWFkZXIgOnRpbWUKCQkJYXR0cl9yZWFkZXIgOmlkCgoJCQlkZWYgaW5pdGlhbGl6ZSh0aW1lLCBpZCkKCQkJCUB0aW1lID0gdGltZQoJCQkJQGlkICAgPSBpZAoJCQllbmQKCQllbmQKCgoKCQlhdHRyX3JlYWRlciA6bGFzdF9waW5nCgkJYXR0cl9yZWFkZXIgOnNlc3NlaW9uX2lkCgoJCWRlZiBpbml0aWFsaXplKGxhc3RfcGluZywgc2Vzc2Vpb25faWQpCgkJCUBsYXN0X3BpbmcgICA9IGxhc3RfcGluZwoJCQlAc2Vzc2Vpb25faWQgPSBzZXNzZWlvbl9pZAoJCWVuZAoJZW5kCgoKCgljbGFzcyBEaXNjb25uZWN0ZWQgPCBBYnN0cmFjdAoJCWF0dHJfcmVhZGVyIDp3aGVuX2Rpc2Nvbm5lY3RlZAoKCQlkZWYgaW5pdGlhbGl6ZSh3aGVuX2Rpc2Nvbm5lY3RlZCkKCQkJQHdoZW5fZGlzY29ubmVjdGVkID0gd2hlbl9kaXNjb25uZWN0ZWQKCQllbmQKCWVuZAplbmQKCgoKY2xhc3MgQ29ubmVjdGlvbkluZm8KCWF0dHJfcmVhZGVyIDpjb25uZWN0aW9uX3N0YXRlCglhdHRyX3JlYWRlciA6aW5ldF9hZGRyCgoJZGVmIGluaXRpYWxpemUoY29ubmVjdGlvbl9zdGF0ZSwgaW5ldF9hZGRyKQoJCUBjb25uZWN0aW9uX3N0YXRlID0gY29ubmVjdGlvbl9zdGF0ZQoJCUBpbmV0X2FkZHIgICAgICAgID0gaW5ldF9hZGRyCgllbmQKZW5kCgpDb25uZWN0aW9uSW5mby5uZXcoIkhlbGxvIiwgIldvcmxkIik=