def recv_string string, flag = 0
      message = @receiver_klass.new
      rc = recvmsg message, flag
      string.replace(message.copy_out_string) if Util.resultcode_ok?(rc)
      message.close
      rc
    end
def recv_string string, flag = 0
      message = @receiver_klass.new
      rc = recvmsg message, flag
      string.replace(message.copy_out_string) if Util.resultcode_ok?(rc)
      message.close
      rc
    end
Helper method to make a new #Message instance and convert its payload
 to a string.

 @param string
 @param flag
   One of @0 (default)@ and @XS::NonBlocking@

 @return 0 when the message was successfully dequeued
 @return -1 under two conditions
   1. The message could not be dequeued
   2. When +flag+ is set with XS::NonBlocking and the socket returned EAGAIN

 With a -1 return code, the user must check XS.errno to determine the
 cause.

 The application code is responsible for handling the +message+ object lifecycle
 when #recv returns an error code.