Class: QuartzTorrent::ExtendedHandshake

Inherits:
Extended show all
Defined in:
lib/quartz_torrent/peermsg.rb

Overview

An Extended Handshake message. Used to negotiate supported extensions.

Constant Summary

Constants inherited from PeerWireMessage

PeerWireMessage::MessageBitfield, PeerWireMessage::MessageCancel, PeerWireMessage::MessageChoke, PeerWireMessage::MessageExtended, PeerWireMessage::MessageHave, PeerWireMessage::MessageInterested, PeerWireMessage::MessageKeepAlive, PeerWireMessage::MessagePiece, PeerWireMessage::MessageRequest, PeerWireMessage::MessageUnchoke, PeerWireMessage::MessageUninterested

Instance Attribute Summary collapse

Attributes inherited from Extended

#extendedMessageId

Attributes inherited from PeerWireMessage

#messageId

Instance Method Summary collapse

Methods inherited from Extended

#payloadLength, #to_s

Methods inherited from PeerWireMessage

#length, #payloadLength, #to_s

Constructor Details

#initializeExtendedHandshake

Returns a new instance of ExtendedHandshake.



374
375
376
377
378
# File 'lib/quartz_torrent/peermsg.rb', line 374

def initialize
  super()
  @dict = {}
  @extendedMessageId = 0
end

Instance Attribute Details

#dictObject

Returns the value of attribute dict.



380
381
382
# File 'lib/quartz_torrent/peermsg.rb', line 380

def dict
  @dict
end

Instance Method Details

#serializeTo(io) ⇒ Object



394
395
396
397
# File 'lib/quartz_torrent/peermsg.rb', line 394

def serializeTo(io)
  super(io)
  io.write dict.bencode
end

#unserialize(payload) ⇒ Object



382
383
384
385
386
387
388
389
390
391
392
# File 'lib/quartz_torrent/peermsg.rb', line 382

def unserialize(payload)
  super(payload)
  payload = payload[1,payload.length]
  begin
    @dict = payload.bdecode
  rescue
    e = RuntimeError.new("Error bdecoding payload '#{payload}' (payload length = #{payload.length})")
    e.set_backtrace($!.backtrace)
    raise e
  end
end