def parse_body(buf)
      if self[:total_body_length] < 1
        buf, rest = "", buf
      else
        buf, rest = buf[0..(self[:total_body_length] - 1)], buf[self[:total_body_length]..-1]
      end

      if self[:extras_length] > 0
        self[:extras] = parse_extras(buf[0..(self[:extras_length]-1)])
      else
        self[:extras] = parse_extras("")
      end
      if self[:key_length] > 0
        self[:key] = buf[self[:extras_length]..(self[:extras_length]+self[:key_length]-1)]
      else
        self[:key] = ""
      end
      self[:value] = buf[(self[:extras_length]+self[:key_length])..-1]

      rest
    end
def parse_body(buf)
      if self[:total_body_length] < 1
        buf, rest = "", buf
      else
        buf, rest = buf[0..(self[:total_body_length] - 1)], buf[self[:total_body_length]..-1]
      end

      if self[:extras_length] > 0
        self[:extras] = parse_extras(buf[0..(self[:extras_length]-1)])
      else
        self[:extras] = parse_extras("")
      end
      if self[:key_length] > 0
        self[:key] = buf[self[:extras_length]..(self[:extras_length]+self[:key_length]-1)]
      else
        self[:key] = ""
      end
      self[:value] = buf[(self[:extras_length]+self[:key_length])..-1]

      rest
    end
Parse body of packet when the +:total_body_length+ field is
 known by header. Pass it at least +total_body_length+ bytes.

 return:: [String] remaining bytes