class DEVp2p::P2PProtocol::Disconnect

Constants

Reason

Public Instance Methods

create(proto, reason=Reason[:client_quitting]) click to toggle source
# File lib/devp2p/p2p_protocol.rb, line 97
def create(proto, reason=Reason[:client_quitting])
  raise ArgumentError, "unknown reason" unless reason_key(reason)
  logger.debug "send_disconnect", peer: proto.peer, reason: reason_name(reason)

  proto.peer.async.report_error "sending disconnect #{reason_name(reason)}"

  Concurrent::ScheduledTask.execute(0.5) { proto.peer.async.stop }

  {reason: reason}
end
reason_key(id) click to toggle source
# File lib/devp2p/p2p_protocol.rb, line 88
def reason_key(id)
  Reason.invert[id]
end
reason_name(id) click to toggle source
# File lib/devp2p/p2p_protocol.rb, line 92
def reason_name(id)
  key = reason_key id
  key ? key.to_s : "unknown (id:#{id})"
end
receive(proto, data) click to toggle source
# File lib/devp2p/p2p_protocol.rb, line 108
def receive(proto, data)
  logger.debug "receive_disconnect", peer: proto.peer, reason: reason_name(data[:reason])
  proto.peer.async.report_error "disconnected #{reason_name(data[:reason])}"
  proto.peer.async.stop
end

Private Instance Methods

logger() click to toggle source
# File lib/devp2p/p2p_protocol.rb, line 116
def logger
  @logger = Logger.new "p2p.protocol"
end