//从二进制流中反序列化出对象RpcMessage
public static RpcMessage unmarshall(Stream stream)
{
RpcMessage m = new RpcMessage();
BinaryReader reader = new BinaryReader(stream);
try {
m.type = RpcBinarySerializer.readByte(reader);
m.sequence = RpcBinarySerializer.readInt(reader);
m.calltype = RpcBinarySerializer.readByte(reader);
m.ifidx = RpcBinarySerializer.readShort(reader);
m.opidx = RpcBinarySerializer.readShort(reader);
m.errcode = RpcBinarySerializer.readInt(reader);
m.paramsize = RpcBinarySerializer.readByte(reader);
m.call_id = RpcBinarySerializer.readShort(reader);
if (m.extra.unmarshall(stream) == false)
{
return(null);
}
m.paramstream = reader.ReadBytes((int)(stream.Length - stream.Position));
}
catch (Exception e) {
RpcCommunicator.instance().logger.error(e.ToString());
m = null;
}
return(m);
}