# Receive a complex object
fun recv(source: Rank, tag: Tag, comm: Comm): nullable Object
do
var status = new Status
# Block until a message in in queue
var err = probe(source, tag, comm, status)
assert err.is_success else print err
# Get message length
var count = status.count(new DataType.char)
assert not count.is_undefined
# Receive message into buffer
var buffer = new FlatBuffer.with_capacity(count)
recv_into(buffer, 0, count, status.source, status.tag, comm)
# Free our status
status.free
# Deserialize message
var deserializer = new JsonDeserializer(buffer)
var deserialized = deserializer.deserialize
if deserialized == null then print "|{buffer}|{buffer.chars.join("-")}| {buffer.length}"
return deserialized
end
lib/mpi/mpi.nit:97,2--124,4