uint64_t umbrellaDetermineReqId(const uint8_t* header, size_t nheader) { uint64_t id; if (!umbrellaGetTagValue(header, nheader, msg_reqid, id)) { throw std::runtime_error("missing reqid"); } if (id == 0) { throw std::runtime_error("invalid reqid"); } return id; }
mc_op_t umbrellaDetermineOperation(const uint8_t* header, size_t nheader) { uint64_t op; if (!umbrellaGetTagValue(header, nheader, msg_op, op)) { throw std::runtime_error("missing op"); } if (op >= UM_NOPS) { throw std::runtime_error("invalid operation"); } return static_cast<mc_op_t>(detail::kUmbrellaOpToMc[op]); }
mc_op_t umbrellaDetermineOperation( const uint8_t* header, size_t nheader) noexcept { uint64_t op; if (!umbrellaGetTagValue(header, nheader, msg_op, op)) { LOG(ERROR) << "Operation is missing in umbrella header. " << "Header size: " << nheader << ". Header: " << folly::StringPiece(reinterpret_cast<const char*>(header), nheader); return mc_op_unknown; } if (op >= UM_NOPS) { LOG(ERROR) << "Invalid operation read from umbrella header. " << "Op: " << op << ". Header size: " << nheader << ". Header: " << folly::StringPiece(reinterpret_cast<const char*>(header), nheader); return mc_op_unknown; } return static_cast<mc_op_t>(detail::kUmbrellaOpToMc[op]); }
bool umbrellaIsReply(const uint8_t* header, size_t nheader) { uint64_t res; return umbrellaGetTagValue(header, nheader, msg_result, res); }