144 #include <irrxml/irrXML.hpp>
160 bool bHarvestingForRetry,
161 bool bReplyWasSuccess,
162 bool bReplyWasFailure,
163 bool bTransactionWasSuccess,
164 bool bTransactionWasFailure)
const
167 const OTIdentifier MSG_NYM_ID(m_strNymID), SERVER_ID(m_strServerID),
168 ACCOUNT_ID(m_strAcctID.Exists() ? m_strAcctID
173 const OTString strLedger(m_ascPayload);
175 OTLedger theLedger(MSG_NYM_ID, ACCOUNT_ID, SERVER_ID);
180 otErr << __FUNCTION__
181 <<
": ERROR: Failed trying to load message ledger:\n\n"
182 << strLedger <<
"\n\n";
232 theNym, bHarvestingForRetry, bReplyWasSuccess, bReplyWasFailure,
233 bTransactionWasSuccess, bTransactionWasFailure);
245 theNym, bHarvestingForRetry, bReplyWasSuccess, bReplyWasFailure,
246 bTransactionWasSuccess, bTransactionWasFailure);
269 std::string strServerID = it.first;
273 OTString OTstrServerID = strServerID.c_str();
276 if (!(pDeque->empty()) &&
277 (theServerID == theTempID))
279 for (uint32_t i = 0; i < pDeque->size(); i++) {
280 const int64_t lAckRequestNumber = pDeque->at(i);
298 bool bFoundMessage =
false;
307 "<OTmessage\n version=\"%s\"\n dateSigned=\"%lld\">\n\n",
311 bFoundMessage =
true;
313 " requestNum=\"%s\"\n"
324 bFoundMessage =
true;
326 " requestNum=\"%s\"\n"
339 "<messagePayload>\n%s</messagePayload>\n\n",
351 bFoundMessage =
true;
353 " requestNum=\"%s\"\n"
368 bFoundMessage =
true;
370 " requestNum=\"%s\"\n"
385 "<messagePayload>\n%s</messagePayload>\n\n",
395 bFoundMessage =
true;
397 " requestNum=\"%s\"\n"
411 bFoundMessage =
true;
413 " requestNum=\"%s\"\n"
428 "<messagePayload>\n%s</messagePayload>\n\n",
438 bFoundMessage =
true;
440 " requestNum=\"%s\"\n"
451 bFoundMessage =
true;
453 " requestNum=\"%s\"\n"
466 "<messagePayload>\n%s</messagePayload>\n\n",
476 bFoundMessage =
true;
478 " requestNum=\"%s\"\n"
486 "<publicAuthentKey>\n%s</publicAuthentKey>\n\n",
489 "<publicEncryptionKey>\n%s</publicEncryptionKey>\n\n",
496 bFoundMessage =
true;
498 " requestNum=\"%s\"\n"
511 bFoundMessage =
true;
513 " requestNum=\"%s\"\n"
521 "<credentialList>\n%s</credentialList>\n\n",
531 bFoundMessage =
true;
533 " requestNum=\"%s\"\n"
554 bFoundMessage =
true;
556 " requestNum=\"%s\"\n"
567 bFoundMessage =
true;
569 " requestNum=\"%s\"\n"
586 bFoundMessage =
true;
590 " requestNum=\"%s\"\n"
603 const bool bCredentials =
606 bFoundMessage =
true;
608 " requestNum=\"%s\"\n"
612 " hasCredentials=\"%s\"\n"
618 (bCredentials ?
"true" :
"false"),
625 "<nymPublicKey>\n%s</nymPublicKey>\n\n",
631 "<credentialList>\n%s</credentialList>\n\n",
645 bFoundMessage =
true;
649 " requestNum=\"%s\"\n"
650 " adjustment=\"%lld\"\n"
661 bFoundMessage =
true;
663 " requestNum=\"%s\"\n"
667 " totalCredits=\"%lld\"\n"
687 bFoundMessage =
true;
691 " requestNum=\"%s\"\n"
700 "<messagePayload>\n%s</messagePayload>\n\n",
707 bFoundMessage =
true;
711 " requestNum=\"%s\"\n"
720 "<messagePayload>\n%s</messagePayload>\n\n",
727 bFoundMessage =
true;
729 " requestNum=\"%s\"\n"
744 "sendUserInstrument") ||
761 bFoundMessage =
true;
765 " requestNum=\"%s\"\n"
774 "<messagePayload>\n%s</messagePayload>\n\n",
781 bFoundMessage =
true;
783 " requestNum=\"%s\"\n"
798 bFoundMessage =
true;
815 bFoundMessage =
true;
820 " nymboxHash=\"%s\"\n"
822 " newRequestNum=\"%lld\"\n"
833 bFoundMessage =
true;
837 " requestNum=\"%s\"\n"
852 bFoundMessage =
true;
855 " requestNum=\"%s\"\n"
857 " accountID=\"%s\"\n"
859 " assetType=\"%s\"\n"
878 bFoundMessage =
true;
895 bFoundMessage =
true;
897 " requestNum=\"%s\"\n"
918 bFoundMessage =
true;
929 "<currencyBasket>\n%s</currencyBasket>\n\n",
936 bFoundMessage =
true;
939 " requestNum=\"%s\"\n"
941 " accountID=\"%s\"\n"
943 " assetType=\"%s\"\n"
958 bFoundMessage =
true;
962 " requestNum=\"%s\"\n"
976 bFoundMessage =
true;
978 " requestNum=\"%s\"\n"
980 " accountID=\"%s\"\n"
1001 bFoundMessage =
true;
1005 " serverID=\"%s\"\n"
1006 " requestNum=\"%s\"\n"
1007 " transactionNum=\"%lld\"\n"
1016 : ((m_lDepth == 1) ?
"inbox" :
"outbox"),
1023 bFoundMessage =
true;
1026 " requestNum=\"%s\"\n"
1028 " accountID=\"%s\"\n"
1029 " transactionNum=\"%lld\"\n"
1039 : ((m_lDepth == 1) ?
"inbox" :
"outbox"),
1055 bFoundMessage =
true;
1058 " serverID=\"%s\"\n"
1059 " requestNum=\"%s\"\n"
1070 bFoundMessage =
true;
1072 " requestNum=\"%s\"\n"
1074 " accountID=\"%s\"\n"
1092 bFoundMessage =
true;
1095 " nymboxHash=\"%s\"\n"
1096 " serverID=\"%s\"\n"
1097 " accountID=\"%s\"\n"
1098 " requestNum=\"%s\""
1115 bFoundMessage =
true;
1117 " requestNum=\"%s\"\n"
1120 " serverID=\"%s\"\n"
1136 "<responseLedger>\n%s</responseLedger>\n\n",
1143 bFoundMessage =
true;
1146 " nymboxHash=\"%s\"\n"
1147 " serverID=\"%s\"\n"
1148 " requestNum=\"%s\""
1158 bFoundMessage =
true;
1160 " requestNum=\"%s\"\n"
1163 " nymboxHash=\"%s\"\n"
1175 bFoundMessage =
true;
1178 " serverID=\"%s\"\n"
1179 " requestNum=\"%s\""
1189 bFoundMessage =
true;
1191 " requestNum=\"%s\"\n"
1194 " nymboxHash=\"%s\"\n"
1217 bFoundMessage =
true;
1220 " serverID=\"%s\"\n"
1221 " accountID=\"%s\"\n"
1222 " requestNum=\"%s\""
1233 bFoundMessage =
true;
1235 " requestNum=\"%s\"\n"
1238 " inboxHash=\"%s\"\n"
1239 " serverID=\"%s\"\n"
1262 bFoundMessage =
true;
1265 " serverID=\"%s\"\n"
1266 " accountID=\"%s\"\n"
1267 " requestNum=\"%s\""
1278 bFoundMessage =
true;
1280 " requestNum=\"%s\"\n"
1283 " outboxHash=\"%s\"\n"
1284 " serverID=\"%s\"\n"
1306 bFoundMessage =
true;
1309 " serverID=\"%s\"\n"
1310 " accountID=\"%s\"\n"
1311 " requestNum=\"%s\""
1322 bFoundMessage =
true;
1324 " requestNum=\"%s\"\n"
1327 " serverID=\"%s\"\n"
1349 bFoundMessage =
true;
1352 " serverID=\"%s\"\n"
1353 " accountID=\"%s\"\n"
1354 " requestNum=\"%s\""
1367 bFoundMessage =
true;
1369 " requestNum=\"%s\"\n"
1371 " inboxHash=\"%s\"\n"
1372 " outboxHash=\"%s\"\n"
1374 " serverID=\"%s\"\n"
1398 bFoundMessage =
true;
1401 " serverID=\"%s\"\n"
1402 " assetType=\"%s\"\n"
1403 " requestNum=\"%s\""
1414 bFoundMessage =
true;
1416 " requestNum=\"%s\"\n"
1419 " serverID=\"%s\"\n"
1441 bFoundMessage =
true;
1444 " serverID=\"%s\"\n"
1445 " assetType=\"%s\"\n"
1446 " requestNum=\"%s\""
1457 bFoundMessage =
true;
1459 " requestNum=\"%s\"\n"
1462 " serverID=\"%s\"\n"
1485 bFoundMessage =
true;
1488 " nymboxHash=\"%s\"\n"
1489 " serverID=\"%s\"\n"
1490 " accountID=\"%s\"\n"
1491 " requestNum=\"%s\""
1508 bFoundMessage =
true;
1510 " requestNum=\"%s\"\n"
1513 " serverID=\"%s\"\n"
1529 "<responseLedger>\n%s</responseLedger>\n\n",
1537 bFoundMessage =
true;
1540 " nymboxHash=\"%s\"\n"
1541 " serverID=\"%s\"\n"
1542 " requestNum=\"%s\""
1559 bFoundMessage =
true;
1561 " requestNum=\"%s\"\n"
1578 "<responseLedger>\n%s</responseLedger>\n\n",
1585 bFoundMessage =
true;
1589 " nymboxHash=\"%s\"\n"
1590 " serverID=\"%s\"\n"
1591 " smartContractID=\"%lld\"\n"
1592 " clauseName=\"%s\"\n"
1593 " hasParam=\"%s\"\n"
1594 " requestNum=\"%s\""
1610 bFoundMessage =
true;
1612 " requestNum=\"%s\"\n"
1628 if (!bFoundMessage) {
1630 " requestNum=\"%s\"\n"
1631 " success=\"false\"\n"
1635 " ><!-- THIS IS AN INVALID MESSAGE -->\n\n",
1678 int32_t nReturnVal = 0;
1692 const OTString strNodeName(xml->getNodeName());
1701 const char* pElementExpected;
1706 if (strNodeName.Compare(
"ackReplies")) {
1708 otErr <<
"Error in OTMessage::ProcessXMLNode: ackReplies field "
1719 else if (strNodeName.Compare(
"acknowledgedReplies")) {
1720 otErr <<
"OTMessage::ProcessXMLNode: SKIPPING DEPRECATED FIELD: "
1721 "acknowledgedReplies\n";
1723 while (xml->getNodeType() != irr::io::EXN_ELEMENT_END) {
1729 else if (strNodeName.Compare(
"OTmessage")) {
1732 OTString strDateSigned = xml->getAttributeValue(
"dateSigned");
1736 otInfo <<
"\n===> Loading XML for Message into memory structures...\n";
1740 else if (strNodeName.Compare(
"getMarketList")) {
1742 m_strNymID = xml->getAttributeValue(
"nymID");
1752 else if (strNodeName.Compare(
"@getMarketList")) {
1755 strSuccess = xml->getAttributeValue(
"success");
1756 if (strSuccess.Compare(
"true"))
1763 m_strNymID = xml->getAttributeValue(
"nymID");
1766 strDepth = xml->getAttributeValue(
"depth");
1770 const char* pElementExpected =
nullptr;
1772 pElementExpected =
"messagePayload";
1774 pElementExpected =
"inReferenceTo";
1776 if (
nullptr != pElementExpected) {
1780 pElementExpected)) {
1781 otErr <<
"Error in OTMessage::ProcessXMLNode: "
1782 "Expected " << pElementExpected
1809 else if (strNodeName.Compare(
"getMarketOffers")) {
1811 m_strNymID = xml->getAttributeValue(
"nymID");
1816 strDepth = xml->getAttributeValue(
"depth");
1827 else if (strNodeName.Compare(
"@getMarketOffers")) {
1828 strSuccess = xml->getAttributeValue(
"success");
1829 if (strSuccess.Compare(
"true"))
1836 m_strNymID = xml->getAttributeValue(
"nymID");
1840 strDepth = xml->getAttributeValue(
"depth");
1844 const char* pElementExpected =
nullptr;
1846 pElementExpected =
"messagePayload";
1848 pElementExpected =
"inReferenceTo";
1850 if (
nullptr != pElementExpected) {
1854 pElementExpected)) {
1855 otErr <<
"Error in OTMessage::ProcessXMLNode: "
1856 "Expected " << pElementExpected
1885 else if (strNodeName.Compare(
"getMarketRecentTrades")) {
1887 m_strNymID = xml->getAttributeValue(
"nymID");
1899 else if (strNodeName.Compare(
"@getMarketRecentTrades")) {
1900 strSuccess = xml->getAttributeValue(
"success");
1901 if (strSuccess.Compare(
"true"))
1908 m_strNymID = xml->getAttributeValue(
"nymID");
1912 strDepth = xml->getAttributeValue(
"depth");
1916 const char* pElementExpected =
nullptr;
1918 pElementExpected =
"messagePayload";
1920 pElementExpected =
"inReferenceTo";
1922 if (
nullptr != pElementExpected) {
1926 pElementExpected)) {
1927 otErr <<
"Error in OTMessage::ProcessXMLNode: "
1928 "Expected " << pElementExpected
1957 else if (strNodeName.Compare(
"getNym_MarketOffers")) {
1959 m_strNymID = xml->getAttributeValue(
"nymID");
1969 else if (strNodeName.Compare(
"@getNym_MarketOffers")) {
1970 strSuccess = xml->getAttributeValue(
"success");
1971 if (strSuccess.Compare(
"true"))
1978 m_strNymID = xml->getAttributeValue(
"nymID");
1981 strDepth = xml->getAttributeValue(
"depth");
1985 const char* pElementExpected =
nullptr;
1987 pElementExpected =
"messagePayload";
1989 pElementExpected =
"inReferenceTo";
1991 if (
nullptr != pElementExpected) {
1995 pElementExpected)) {
1996 otErr <<
"Error in OTMessage::ProcessXMLNode: "
1997 "Expected " << pElementExpected
2024 else if (strNodeName.Compare(
"checkServerID")) {
2027 m_strNymID = xml->getAttributeValue(
"nymID");
2030 pElementExpected =
"publicAuthentKey";
2034 pElementExpected)) {
2035 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2036 "Expected " << pElementExpected
2037 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2043 pElementExpected =
"publicEncryptionKey";
2047 pElementExpected)) {
2048 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2049 "Expected " << pElementExpected
2050 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2059 <<
"\nPublic encryption key:\n" <<
m_strNymID2 <<
"\n";
2063 else if (strNodeName.Compare(
"@checkServerID")) {
2064 strSuccess = xml->getAttributeValue(
"success");
2065 if (strSuccess.Compare(
"true"))
2072 m_strNymID = xml->getAttributeValue(
"nymID");
2082 else if (strNodeName.Compare(
"createUserAccount")) {
2085 m_strNymID = xml->getAttributeValue(
"nymID");
2088 pElementExpected =
"credentialList";
2091 pElementExpected)) {
2092 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2093 "Expected " << pElementExpected
2094 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2098 pElementExpected =
"credentials";
2101 pElementExpected)) {
2102 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2103 "Expected " << pElementExpected
2104 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2113 else if (strNodeName.Compare(
"@createUserAccount")) {
2114 strSuccess = xml->getAttributeValue(
"success");
2115 if (strSuccess.Compare(
"true"))
2122 m_strNymID = xml->getAttributeValue(
"nymID");
2126 pElementExpected =
"nymfile";
2130 pElementExpected)) {
2131 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2132 "Expected " << pElementExpected
2139 pElementExpected =
"inReferenceTo";
2143 pElementExpected)) {
2144 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2145 "Expected " << pElementExpected
2146 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2157 else if (strNodeName.Compare(
"deleteUserAccount")) {
2159 m_strNymID = xml->getAttributeValue(
"nymID");
2168 else if (strNodeName.Compare(
"@deleteUserAccount")) {
2169 strSuccess = xml->getAttributeValue(
"success");
2170 if (strSuccess.Compare(
"true"))
2177 m_strNymID = xml->getAttributeValue(
"nymID");
2180 pElementExpected =
"inReferenceTo";
2184 pElementExpected)) {
2185 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2186 "Expected " << pElementExpected
2187 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2198 else if (strNodeName.Compare(
"getRequest")) {
2201 m_strNymID = xml->getAttributeValue(
"nymID");
2209 else if (strNodeName.Compare(
"@getRequest")) {
2210 strSuccess = xml->getAttributeValue(
"success");
2211 if (strSuccess.Compare(
"true"))
2218 m_strNymID = xml->getAttributeValue(
"nymID");
2223 xml->getAttributeValue(
"newRequestNum");
2225 strNewRequestNum.
Exists() ? atol(strNewRequestNum.
Get()) : 0;
2236 else if (strNodeName.Compare(
"outmailMessage") ||
2237 strNodeName.Compare(
"outpaymentsMessage")) {
2239 m_strNymID = xml->getAttributeValue(
"nymID");
2244 pElementExpected =
"messagePayload";
2248 pElementExpected)) {
2249 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2250 "Expected " << pElementExpected
2251 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2262 else if (strNodeName.Compare(
"sendUserMessage")) {
2264 m_strNymID = xml->getAttributeValue(
"nymID");
2269 pElementExpected =
"messagePayload";
2273 pElementExpected)) {
2274 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2275 "Expected " << pElementExpected
2276 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2287 else if (strNodeName.Compare(
"@sendUserMessage")) {
2288 strSuccess = xml->getAttributeValue(
"success");
2289 if (strSuccess.Compare(
"true"))
2296 m_strNymID = xml->getAttributeValue(
"nymID");
2308 else if (strNodeName.Compare(
"sendUserInstrument") ||
2309 strNodeName.Compare(
"payDividend"))
2314 m_strNymID = xml->getAttributeValue(
"nymID");
2319 pElementExpected =
"messagePayload";
2323 pElementExpected)) {
2324 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2325 "Expected " << pElementExpected
2326 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2337 else if (strNodeName.Compare(
"@sendUserInstrument")) {
2338 strSuccess = xml->getAttributeValue(
"success");
2339 if (strSuccess.Compare(
"true"))
2346 m_strNymID = xml->getAttributeValue(
"nymID");
2358 else if (strNodeName.Compare(
"usageCredits")) {
2360 m_strNymID = xml->getAttributeValue(
"nymID");
2365 OTString strAdjustment = xml->getAttributeValue(
"adjustment");
2373 <<
"\nAdjustment: " <<
m_lDepth <<
"\n";
2377 else if (strNodeName.Compare(
"@usageCredits")) {
2378 strSuccess = xml->getAttributeValue(
"success");
2379 if (strSuccess.Compare(
"true"))
2386 m_strNymID = xml->getAttributeValue(
"nymID");
2390 OTString strTotalCredits = xml->getAttributeValue(
"totalCredits");
2400 <<
"\nTotal Credits: " <<
m_lDepth <<
" \n\n";
2403 else if (strNodeName.Compare(
"checkUser")) {
2405 m_strNymID = xml->getAttributeValue(
"nymID");
2417 else if (strNodeName.Compare(
"@checkUser")) {
2418 strSuccess = xml->getAttributeValue(
"success");
2419 if (strSuccess.Compare(
"true"))
2426 m_strNymID = xml->getAttributeValue(
"nymID");
2431 xml->getAttributeValue(
"hasCredentials"));
2432 const bool bHasCredentials = strHasCredentials.
Compare(
"true");
2434 const char* pElementExpected =
nullptr;
2436 pElementExpected =
"nymPublicKey";
2438 pElementExpected =
"inReferenceTo";
2442 pElementExpected)) {
2443 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2444 "Expected " << pElementExpected
2445 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2453 if (bHasCredentials) {
2454 pElementExpected =
"credentialList";
2458 pElementExpected)) {
2459 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2460 "Expected " << pElementExpected
2467 pElementExpected =
"credentials";
2471 pElementExpected)) {
2472 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2473 "Expected " << pElementExpected
2500 else if (strNodeName.Compare(
"issueAssetType")) {
2502 m_strNymID = xml->getAttributeValue(
"nymID");
2507 pElementExpected =
"assetContract";
2511 pElementExpected)) {
2512 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2513 "Expected " << pElementExpected
2514 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2526 else if (strNodeName.Compare(
"@issueAssetType")) {
2527 strSuccess = xml->getAttributeValue(
"success");
2528 if (strSuccess.Compare(
"true"))
2534 m_strNymID = xml->getAttributeValue(
"nymID");
2538 m_strAcctID = xml->getAttributeValue(
"accountID");
2546 pElementExpected =
"inReferenceTo";
2550 pElementExpected)) {
2551 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2552 "Expected " << pElementExpected
2560 pElementExpected =
"issuerAccount";
2564 pElementExpected)) {
2565 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2566 "Expected " << pElementExpected
2578 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2579 "Expected issuerAccount and/or inReferenceTo elements "
2580 "with text fields in "
2581 "@issueAssetType reply\n";
2598 else if (strNodeName.Compare(
"queryAssetTypes")) {
2600 m_strNymID = xml->getAttributeValue(
"nymID");
2604 pElementExpected =
"stringMap";
2608 pElementExpected)) {
2609 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2610 "Expected " << pElementExpected
2611 <<
" element with text field, for " <<
m_strCommand <<
".\n";
2622 else if (strNodeName.Compare(
"@queryAssetTypes")) {
2623 strSuccess = xml->getAttributeValue(
"success");
2624 if (strSuccess.Compare(
"true"))
2630 m_strNymID = xml->getAttributeValue(
"nymID");
2640 pElementExpected =
"inReferenceTo";
2644 pElementExpected)) {
2645 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2646 "Expected " << pElementExpected
2654 pElementExpected =
"stringMap";
2658 pElementExpected)) {
2659 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2660 "Expected " << pElementExpected
2672 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2673 "Expected stringMap and/or inReferenceTo elements with "
2675 "@queryAssetTypes reply\n";
2686 else if (strNodeName.Compare(
"createAccount")) {
2688 m_strNymID = xml->getAttributeValue(
"nymID");
2701 else if (strNodeName.Compare(
"@createAccount")) {
2702 strSuccess = xml->getAttributeValue(
"success");
2703 if (strSuccess.Compare(
"true"))
2710 m_strNymID = xml->getAttributeValue(
"nymID");
2712 m_strAcctID = xml->getAttributeValue(
"accountID");
2720 pElementExpected =
"inReferenceTo";
2724 pElementExpected)) {
2725 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2726 "Expected " << pElementExpected
2734 pElementExpected =
"newAccount";
2738 pElementExpected)) {
2739 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2740 "Expected " << pElementExpected
2752 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2753 "Expected newAccount element with text field, in "
2754 "@createAccount reply\n";
2769 else if (strNodeName.Compare(
"getBoxReceipt")) {
2771 m_strNymID = xml->getAttributeValue(
"nymID");
2773 m_strAcctID = xml->getAttributeValue(
"accountID");
2776 strTransactionNum = xml->getAttributeValue(
"transactionNum");
2778 strTransactionNum.
Exists() ? atol(strTransactionNum.
Get()) : 0;
2780 const OTString strBoxType = xml->getAttributeValue(
"boxType");
2782 if (strBoxType.Compare(
"nymbox"))
2784 else if (strBoxType.Compare(
"inbox"))
2786 else if (strBoxType.Compare(
"outbox"))
2790 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2791 "Expected boxType to be inbox, outbox, or nymbox, in "
2803 << ((
m_lDepth == 0) ?
"nymbox" : (m_lDepth == 1) ?
"inbox"
2809 else if (strNodeName.Compare(
"@getBoxReceipt")) {
2810 strSuccess = xml->getAttributeValue(
"success");
2811 if (strSuccess.Compare(
"true"))
2818 m_strNymID = xml->getAttributeValue(
"nymID");
2820 m_strAcctID = xml->getAttributeValue(
"accountID");
2822 strTransactionNum = xml->getAttributeValue(
"transactionNum");
2824 strTransactionNum.
Exists() ? atol(strTransactionNum.
Get()) : 0;
2826 const OTString strBoxType = xml->getAttributeValue(
"boxType");
2828 if (strBoxType.Compare(
"nymbox"))
2830 else if (strBoxType.Compare(
"inbox"))
2832 else if (strBoxType.Compare(
"outbox"))
2836 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2837 "Expected boxType to be inbox, outbox, or nymbox, in "
2838 "@getBoxReceipt reply\n";
2846 pElementExpected =
"inReferenceTo";
2850 pElementExpected)) {
2851 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2852 "Expected " << pElementExpected
2860 pElementExpected =
"boxReceipt";
2864 pElementExpected)) {
2865 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2866 "Expected " << pElementExpected
2878 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2879 "Expected boxReceipt and/or inReferenceTo elements with "
2881 "@getBoxReceipt reply\n";
2894 else if (strNodeName.Compare(
"deleteAssetAccount")) {
2896 m_strNymID = xml->getAttributeValue(
"nymID");
2898 m_strAcctID = xml->getAttributeValue(
"accountID");
2910 else if (strNodeName.Compare(
"@deleteAssetAccount")) {
2911 strSuccess = xml->getAttributeValue(
"success");
2912 if (strSuccess.Compare(
"true"))
2919 m_strNymID = xml->getAttributeValue(
"nymID");
2921 m_strAcctID = xml->getAttributeValue(
"accountID");
2927 pElementExpected =
"inReferenceTo";
2931 pElementExpected)) {
2932 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2933 "Expected " << pElementExpected
2943 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2944 "Expected inReferenceTo element with text fields in "
2945 "@deleteAssetAccount reply\n";
2960 else if (strNodeName.Compare(
"issueBasket")) {
2962 m_strNymID = xml->getAttributeValue(
"nymID");
2967 pElementExpected =
"currencyBasket";
2971 pElementExpected)) {
2972 otErr <<
"Error in OTMessage::ProcessXMLNode: "
2973 "Expected " << pElementExpected
2983 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
2984 "Expected currencyBasket element with text fields in "
2985 "issueBasket message\n";
2996 else if (strNodeName.Compare(
"@issueBasket")) {
2997 strSuccess = xml->getAttributeValue(
"success");
2998 if (strSuccess.Compare(
"true"))
3005 m_strNymID = xml->getAttributeValue(
"nymID");
3008 m_strAcctID = xml->getAttributeValue(
"accountID");
3011 pElementExpected =
"inReferenceTo";
3015 pElementExpected)) {
3016 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3017 "Expected " << pElementExpected
3028 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
3029 "Expected inReferenceTo element with text fields in "
3030 "@issueBasket reply\n";
3043 else if (strNodeName.Compare(
"getTransactionNum")) {
3045 m_strNymID = xml->getAttributeValue(
"nymID");
3058 else if (strNodeName.Compare(
"@getTransactionNum")) {
3059 strSuccess = xml->getAttributeValue(
"success");
3060 if (strSuccess.Compare(
"true"))
3067 m_strNymID = xml->getAttributeValue(
"nymID");
3079 else if (strNodeName.Compare(
"notarizeTransactions")) {
3081 m_strNymID = xml->getAttributeValue(
"nymID");
3084 m_strAcctID = xml->getAttributeValue(
"accountID");
3088 pElementExpected =
"accountLedger";
3092 pElementExpected)) {
3093 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3094 "Expected " << pElementExpected
3110 else if (strNodeName.Compare(
"@notarizeTransactions")) {
3111 strSuccess = xml->getAttributeValue(
"success");
3112 if (strSuccess.Compare(
"true"))
3119 m_strNymID = xml->getAttributeValue(
"nymID");
3121 m_strAcctID = xml->getAttributeValue(
"accountID");
3128 pElementExpected =
"inReferenceTo";
3132 pElementExpected)) {
3133 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3134 "Expected " << pElementExpected
3142 pElementExpected =
"responseLedger";
3146 pElementExpected)) {
3147 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3148 "Expected " << pElementExpected
3159 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
3160 "Expected responseLedger and/or inReferenceTo elements "
3161 "with text fields in "
3162 "@notarizeTransactions reply\n";
3178 else if (strNodeName.Compare(
"getInbox")) {
3180 m_strNymID = xml->getAttributeValue(
"nymID");
3182 m_strAcctID = xml->getAttributeValue(
"accountID");
3192 else if (strNodeName.Compare(
"getNymbox")) {
3194 m_strNymID = xml->getAttributeValue(
"nymID");
3204 else if (strNodeName.Compare(
"@getInbox")) {
3205 strSuccess = xml->getAttributeValue(
"success");
3206 if (strSuccess.Compare(
"true"))
3213 m_strNymID = xml->getAttributeValue(
"nymID");
3215 m_strAcctID = xml->getAttributeValue(
"accountID");
3218 const char* pElementExpected;
3220 pElementExpected =
"inboxLedger";
3222 pElementExpected =
"inReferenceTo";
3227 pElementExpected)) {
3228 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3229 "Expected " << pElementExpected
3230 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3248 else if (strNodeName.Compare(
"@getNymbox")) {
3249 strSuccess = xml->getAttributeValue(
"success");
3250 if (strSuccess.Compare(
"true"))
3257 m_strNymID = xml->getAttributeValue(
"nymID");
3261 const char* pElementExpected;
3263 pElementExpected =
"nymboxLedger";
3265 pElementExpected =
"inReferenceTo";
3270 pElementExpected)) {
3271 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3272 "Expected " << pElementExpected
3273 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3290 else if (strNodeName.Compare(
"getOutbox")) {
3292 m_strNymID = xml->getAttributeValue(
"nymID");
3294 m_strAcctID = xml->getAttributeValue(
"accountID");
3304 else if (strNodeName.Compare(
"@getOutbox")) {
3305 strSuccess = xml->getAttributeValue(
"success");
3306 if (strSuccess.Compare(
"true"))
3313 m_strNymID = xml->getAttributeValue(
"nymID");
3315 m_strAcctID = xml->getAttributeValue(
"accountID");
3318 const char* pElementExpected;
3320 pElementExpected =
"outboxLedger";
3322 pElementExpected =
"inReferenceTo";
3327 pElementExpected)) {
3328 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3329 "Expected " << pElementExpected
3330 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3348 else if (strNodeName.Compare(
"getAccount")) {
3350 m_strNymID = xml->getAttributeValue(
"nymID");
3352 m_strAcctID = xml->getAttributeValue(
"accountID");
3362 else if (strNodeName.Compare(
"@getAccount")) {
3363 strSuccess = xml->getAttributeValue(
"success");
3364 if (strSuccess.Compare(
"true"))
3371 m_strNymID = xml->getAttributeValue(
"nymID");
3373 m_strAcctID = xml->getAttributeValue(
"accountID");
3375 const char* pElementExpected;
3377 pElementExpected =
"assetAccount";
3379 pElementExpected =
"inReferenceTo";
3384 pElementExpected)) {
3385 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3386 "Expected " << pElementExpected
3387 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3405 else if (strNodeName.Compare(
"getAccountFiles")) {
3407 m_strNymID = xml->getAttributeValue(
"nymID");
3409 m_strAcctID = xml->getAttributeValue(
"accountID");
3419 else if (strNodeName.Compare(
"@getAccountFiles")) {
3420 strSuccess = xml->getAttributeValue(
"success");
3421 if (strSuccess.Compare(
"true"))
3428 m_strNymID = xml->getAttributeValue(
"nymID");
3430 m_strAcctID = xml->getAttributeValue(
"accountID");
3434 const char* pElementExpected;
3436 pElementExpected =
"acctFiles";
3438 pElementExpected =
"inReferenceTo";
3443 pElementExpected)) {
3444 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3445 "Expected " << pElementExpected
3446 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3464 else if (strNodeName.Compare(
"getContract")) {
3466 m_strNymID = xml->getAttributeValue(
"nymID");
3478 else if (strNodeName.Compare(
"@getContract")) {
3479 strSuccess = xml->getAttributeValue(
"success");
3480 if (strSuccess.Compare(
"true"))
3487 m_strNymID = xml->getAttributeValue(
"nymID");
3491 const char* pElementExpected;
3493 pElementExpected =
"assetContract";
3495 pElementExpected =
"inReferenceTo";
3500 pElementExpected)) {
3501 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3502 "Expected " << pElementExpected
3503 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3521 else if (strNodeName.Compare(
"getMint")) {
3523 m_strNymID = xml->getAttributeValue(
"nymID");
3537 else if (strNodeName.Compare(
"@getMint")) {
3538 strSuccess = xml->getAttributeValue(
"success");
3539 if (strSuccess.Compare(
"true"))
3546 m_strNymID = xml->getAttributeValue(
"nymID");
3550 const char* pElementExpected;
3552 pElementExpected =
"mint";
3554 pElementExpected =
"inReferenceTo";
3559 pElementExpected)) {
3560 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3561 "Expected " << pElementExpected
3562 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3580 else if (strNodeName.Compare(
"triggerClause")) {
3582 m_strNymID = xml->getAttributeValue(
"nymID");
3585 m_strNymID2 = xml->getAttributeValue(
"clauseName");
3587 const OTString strHasParam = xml->getAttributeValue(
"hasParam");
3589 strTransactionNum = xml->getAttributeValue(
"smartContractID");
3590 if (strTransactionNum.
Exists())
3593 if (strHasParam.
Compare(
"true")) {
3594 pElementExpected =
"parameter";
3598 pElementExpected)) {
3599 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3600 "Expected " << pElementExpected
3618 else if (strNodeName.Compare(
"@triggerClause")) {
3619 strSuccess = xml->getAttributeValue(
"success");
3620 if (strSuccess.Compare(
"true"))
3627 m_strNymID = xml->getAttributeValue(
"nymID");
3630 const char* pElementExpected =
"inReferenceTo";
3635 pElementExpected)) {
3636 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3637 "Expected " << pElementExpected
3638 <<
" element with text field, for " <<
m_strCommand <<
".\n";
3651 else if (strNodeName.Compare(
"processInbox")) {
3653 m_strNymID = xml->getAttributeValue(
"nymID");
3656 m_strAcctID = xml->getAttributeValue(
"accountID");
3660 pElementExpected =
"processLedger";
3664 pElementExpected)) {
3665 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3666 "Expected " << pElementExpected
3682 else if (strNodeName.Compare(
"processNymbox")) {
3684 m_strNymID = xml->getAttributeValue(
"nymID");
3690 pElementExpected =
"processLedger";
3694 pElementExpected)) {
3695 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3696 "Expected " << pElementExpected
3711 else if (strNodeName.Compare(
"@processInbox")) {
3712 strSuccess = xml->getAttributeValue(
"success");
3713 if (strSuccess.Compare(
"true"))
3720 m_strNymID = xml->getAttributeValue(
"nymID");
3722 m_strAcctID = xml->getAttributeValue(
"accountID");
3729 pElementExpected =
"inReferenceTo";
3733 pElementExpected)) {
3734 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3735 "Expected " << pElementExpected
3743 pElementExpected =
"responseLedger";
3747 pElementExpected)) {
3748 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3749 "Expected " << pElementExpected
3760 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
3761 "Expected responseLedger and/or inReferenceTo elements "
3762 "with text fields in "
3763 "@processInbox reply\n";
3776 else if (strNodeName.Compare(
"@processNymbox")) {
3777 strSuccess = xml->getAttributeValue(
"success");
3778 if (strSuccess.Compare(
"true"))
3785 m_strNymID = xml->getAttributeValue(
"nymID");
3793 pElementExpected =
"inReferenceTo";
3797 pElementExpected)) {
3798 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3799 "Expected " << pElementExpected
3807 pElementExpected =
"responseLedger";
3811 pElementExpected)) {
3812 otErr <<
"Error in OTMessage::ProcessXMLNode: "
3813 "Expected " << pElementExpected
3824 otErr <<
"Error in OTMessage::ProcessXMLNode:\n"
3825 "Expected responseLedger and/or inReferenceTo elements "
3826 "with text fields in "
3827 "@processNymbox reply\n";
3935 , m_bIsSigned(false)
3936 , m_lNewRequestNum(0)
3938 , m_lTransactionNum(0)
OTASCIIArmor m_ascPayload2
virtual bool SaveContractWallet(std::ofstream &ofs) const
virtual EXPORT bool SignContract(const OTPseudonym &theNym, const OTPasswordData *pPWData=nullptr)
virtual EXPORT bool VerifySignature(const OTPseudonym &theNym, const OTPasswordData *pPWData=nullptr) const
bool HarvestClosingNumbers(OTPseudonym &theNym, bool bHarvestingForRetry, bool bReplyWasSuccess, bool bReplyWasFailure, bool bTransactionWasSuccess, bool bTransactionWasFailure)
EXPORT void SetAcknowledgments(OTPseudonym &theNym)
int64_t m_lTransactionNum
EXPORT bool SaveContractRaw(OTString &strOutput) const
EXPORT uint32_t GetLength() const
virtual EXPORT ~OTMessage()
EXPORT void Concatenate(const char *arg,...)
EXPORT void ReleaseSignatures()
EXPORT bool Exists() const
EXPORT bool Compare(const char *compare) const
OTNumList m_AcknowledgedReplies
EXPORT void Set(const char *data, uint32_t enforcedMaxLength=0)
time64_t OTTimeGetCurrentTime()
EXPORT bool LoadLedgerFromString(const OTString &theStr)
static EXPORT bool LoadEncodedTextField(irr::io::IrrXMLReader *&xml, OTASCIIArmor &ascOutput)
EXPORT bool Output(std::set< int64_t > &theOutput) const
std::deque< int64_t > dequeOfTransNums
bool HarvestOpeningNumber(OTPseudonym &theNym, bool bHarvestingForRetry, bool bReplyWasSuccess, bool bReplyWasFailure, bool bTransactionWasSuccess, bool bTransactionWasFailure)
EXPORT bool SignContractAuthent(const OTPseudonym &theNym, const OTPasswordData *pPWData=nullptr)
OTString m_strContractType
OTLOG_IMPORT OTLogStream otInfo
OTASCIIArmor m_ascInReferenceTo
EXPORT int32_t Count() const
virtual void UpdateContents()
OTStringXML m_xmlUnsigned
OTLOG_IMPORT OTLogStream otWarn
EXPORT const char * Get() const
OTLOG_IMPORT OTLogStream otErr
OTASCIIArmor m_ascPayload
EXPORT bool HarvestTransactionNumbers(OTPseudonym &theNym, bool bHarvestingForRetry, bool bReplyWasSuccess, bool bReplyWasFailure, bool bTransactionWasSuccess, bool bTransactionWasFailure) const
mapOfTransNums & GetMapAcknowledgedNum()
virtual EXPORT bool VerifySigAuthent(const OTPseudonym &theNym, const OTPasswordData *pPWData=nullptr) const
int64_t OTTimeGetSecondsFromTime(time64_t time)
OTString m_strNymPublicKey
virtual EXPORT void Release()
virtual bool VerifyContractID() const
virtual int32_t ProcessXMLNode(irr::io::IrrXMLReader *&xml)
EXPORT const mapOfTransactions & GetTransactionMap() const
static bool LoadEncodedTextFieldByName(irr::io::IrrXMLReader *&xml, OTASCIIArmor &ascOutput, const char *&szName, OTString::Map *pmapExtraVars=nullptr)