void GridClientProtobufMarshaller::unwrap(const ObjectWrapper& objWrapper, GridClientMessageTopologyResult& topRslt) { ProtoResponse resp; unwrapResponse(objWrapper, resp); fillResponseHeader(resp, topRslt); std::vector<GridClientNode> nodes; if (resp.has_resultbean()) { if (resp.resultbean().type() == NODE_BEAN) { GridClientNode nodeBean; ::unwrap(resp.resultbean(), nodeBean); nodes.push_back(nodeBean); } else { assert(resp.resultbean().type() == COLLECTION); std::string binary = resp.resultbean().binary(); ::Collection coll; unmarshalMsg((int8_t*) binary.c_str(), binary.size(), coll); unwrapCollection(coll.item(), nodes); assert(nodes.size() == (size_t) coll.item().size()); } } topRslt.setNodes(nodes); }