def recv_multipart list, routing_envelope, flag = 0
      parts = []
      rc = recvmsgs parts, flag

      if Util.resultcode_ok?(rc)
        routing = true
        parts.each do |part|
          if routing
            routing_envelope << part
            routing = part.size > 0
          else
            list << part
          end
        end
      end

      rc
    end
def recv_multipart list, routing_envelope, flag = 0
      parts = []
      rc = recvmsgs parts, flag

      if Util.resultcode_ok?(rc)
        routing = true
        parts.each do |part|
          if routing
            routing_envelope << part
            routing = part.size > 0
          else
            list << part
          end
        end
      end

      rc
    end
Should only be used for XREQ, XREP, DEALER and ROUTER type sockets. Takes
 a +list+ for receiving the message body parts and a +routing_envelope+
 for receiving the message parts comprising the 0mq routing information.

 @param [Array] list
 @param routing_envelope
 @param flag
   One of @0 (default)@ and @XS::NonBlocking@

 @return 0 if successful
 @return -1 if unsuccessful