void validateAccountObj(js::mObject const& _obj) { if (_obj.count(c_precompiled)) { // A precompiled contract requireJsonFields(_obj, "validateAccountObj", {{c_precompiled, {{js::obj_type}, JsonFieldPresence::Required}}, {c_wei, {{js::str_type}, JsonFieldPresence::Optional}}, {c_balance, {{js::str_type}, JsonFieldPresence::Optional}}}); } else { // Extendable account description. Check typo errors and fields type. requireJsonFields(_obj, "validateAccountObj", {{c_code, {{js::str_type}, JsonFieldPresence::Optional}}, {c_nonce, {{js::str_type}, JsonFieldPresence::Optional}}, {c_storage, {{js::obj_type}, JsonFieldPresence::Optional}}, {c_balance, {{js::str_type}, JsonFieldPresence::Optional}}, {c_wei, {{js::str_type}, JsonFieldPresence::Optional}}, {c_codeFromFile, {{js::str_type}, JsonFieldPresence::Optional}}}); // At least one field must be set if (_obj.empty()) { string comment = "Error in validateAccountObj: At least one field must be set (code, nonce, " "storage, balance, wei, codeFromFile)!"; BOOST_THROW_EXCEPTION(MissingField() << errinfo_comment(comment)); } // c_code, c_codeFromFile could not coexist if (_obj.count(c_code) && _obj.count(c_codeFromFile)) { string comment = "Error in validateAccountObj: field 'code' contradicts field 'codeFromFile'!"; BOOST_THROW_EXCEPTION(UnknownField() << errinfo_comment(comment)); } } // c_wei, c_balance could not coexist if (_obj.count(c_wei) && _obj.count(c_balance)) { string comment = "Error in validateAccountObj: field 'balance' contradicts field 'wei'!"; BOOST_THROW_EXCEPTION(UnknownField() << errinfo_comment(comment)); } }
/// Returns a pointer (to memory) of the first header in the Packet Zone. /// @throw MissingField If there is no first header. ACE_UINT8* ptrFirstHeader() const { if ( ! hasHeader() ) { throw MissingField(MissingField::msg("AOS M_PDU", "Packet Zone Header")); } return ptrPacketZone() + getFirstHeaderIndex(); }