def to_wire_form
case @id
when :keepalive
0.to_fbbe
when :choke, :unchoke, :interested, :uninterested
1.to_fbbe + WIRE_IDS.index(@id).chr
when :have
5.to_fbbe + 4.chr + @args[:index].to_fbbe
when :bitfield
(@args[:bitfield].length + 1).to_fbbe + 5.chr + @args[:bitfield]
when :request, :cancel
13.to_fbbe + WIRE_IDS.index(@id).chr + @args[:index].to_fbbe +
@args[:begin].to_fbbe + @args[:length].to_fbbe
when :piece
(@args[:length] + 9).to_fbbe + 7.chr + @args[:index].to_fbbe +
@args[:begin].to_fbbe
else
raise "unknown message type #{id}"
end
end