This commit is contained in:
intelliot
2023-01-03 17:28:20 +00:00
parent 4a02d8576f
commit cadb27d47e
1525 changed files with 19340 additions and 19459 deletions

View File

@@ -1467,369 +1467,360 @@ $(function() {
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <span class="comment">// callbackFuncP.</span></div>
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; </div>
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="comment">// Receive reply</span></div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordflow">if</span> (iStatus == 401)</div>
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="stringliteral">&quot;incorrect rpcuser or rpcpassword (authorization failed)&quot;</span>);</div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; (iStatus &gt;= 400) &amp;&amp; (iStatus != 400) &amp;&amp; (iStatus != 404) &amp;&amp;</div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; (iStatus != 500)) <span class="comment">// ?</span></div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(<span class="stringliteral">&quot;server returned HTTP error &quot;</span>) +</div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a>(iStatus));</div>
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strData.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>())</div>
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; Throw&lt;std::runtime_error&gt;(<span class="stringliteral">&quot;no response from server&quot;</span>);</div>
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; </div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="comment">// Parse reply</span></div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;RPC reply: &quot;</span> &lt;&lt; strData &lt;&lt; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keywordflow">if</span> (strData.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Unable to parse request&quot;</span>) == 0 ||</div>
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; strData.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(jss::invalid_API_version.c_str()) == 0)</div>
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; Throw&lt;RequestNotParseable&gt;(strData);</div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <a class="code" href="classJson_1_1Reader.html">Json::Reader</a> reader;</div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvReply;</div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="keywordflow">if</span> (!reader.<a class="code" href="classJson_1_1Reader.html#a8ee4d40504e4f8b069745d762ab4d78c">parse</a>(strData, jvReply))</div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; Throw&lt;std::runtime_error&gt;(<span class="stringliteral">&quot;couldn&#39;t parse reply from server&quot;</span>);</div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; </div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keywordflow">if</span> (!jvReply)</div>
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="stringliteral">&quot;expected reply to have result, error and id properties&quot;</span>);</div>
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; </div>
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvResult(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; </div>
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; jvResult[<span class="stringliteral">&quot;result&quot;</span>] = jvReply;</div>
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; </div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; (callbackFuncP)(jvResult);</div>
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; }</div>
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; </div>
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; }</div>
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; </div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <span class="comment">// Build the request.</span></div>
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l01437"></a><span class="lineno"><a class="line" href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8"> 1437</a></span>&#160; <a class="code" href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8">onRequest</a>(</div>
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strMethod,</div>
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span>&amp; jvParams,</div>
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map&lt;std::string, std::string&gt;</a> <span class="keyword">const</span>&amp; headers,</div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strPath,</div>
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; boost::asio::streambuf&amp; sb,</div>
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strHost,</div>
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; {</div>
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;requestRPC: strPath=&#39;&quot;</span> &lt;&lt; strPath &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span>;</div>
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keywordflow">if</span> (strData.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>())</div>
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; Throw&lt;std::runtime_error&gt;(<span class="stringliteral">&quot;no response from server&quot;</span>);</div>
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; </div>
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; <span class="comment">// Parse reply</span></div>
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;RPC reply: &quot;</span> &lt;&lt; strData &lt;&lt; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">if</span> (strData.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Unable to parse request&quot;</span>) == 0 ||</div>
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; strData.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(jss::invalid_API_version.c_str()) == 0)</div>
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; Throw&lt;RequestNotParseable&gt;(strData);</div>
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <a class="code" href="classJson_1_1Reader.html">Json::Reader</a> reader;</div>
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvReply;</div>
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keywordflow">if</span> (!reader.<a class="code" href="classJson_1_1Reader.html#a8ee4d40504e4f8b069745d762ab4d78c">parse</a>(strData, jvReply))</div>
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; Throw&lt;std::runtime_error&gt;(<span class="stringliteral">&quot;couldn&#39;t parse reply from server&quot;</span>);</div>
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; </div>
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <span class="keywordflow">if</span> (!jvReply)</div>
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; Throw&lt;std::runtime_error&gt;(</div>
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; <span class="stringliteral">&quot;expected reply to have result, error and id properties&quot;</span>);</div>
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; </div>
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvResult(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; </div>
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; jvResult[<span class="stringliteral">&quot;result&quot;</span>] = jvReply;</div>
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; </div>
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; (callbackFuncP)(jvResult);</div>
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; }</div>
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; </div>
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; }</div>
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; </div>
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="comment">// Build the request.</span></div>
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l01428"></a><span class="lineno"><a class="line" href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8"> 1428</a></span>&#160; <a class="code" href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8">onRequest</a>(</div>
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strMethod,</div>
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span>&amp; jvParams,</div>
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map&lt;std::string, std::string&gt;</a> <span class="keyword">const</span>&amp; headers,</div>
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strPath,</div>
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; boost::asio::streambuf&amp; sb,</div>
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strHost,</div>
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; {</div>
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;requestRPC: strPath=&#39;&quot;</span> &lt;&lt; strPath &lt;&lt; <span class="stringliteral">&quot;&#39;&quot;</span>;</div>
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; </div>
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> osRequest(&amp;sb);</div>
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; osRequest &lt;&lt; <a class="code" href="namespaceripple.html#a308b7ff6498ad19c844c1d36b5f0d7ae">createHTTPPost</a>(</div>
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; strHost,</div>
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; strPath,</div>
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; <a class="code" href="namespaceripple.html#aa5bf57e1a7b6f174338fefbdfbc6ded6">JSONRPCRequest</a>(strMethod, jvParams, <a class="code" href="classJson_1_1Value.html">Json::Value</a>(1)),</div>
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; headers);</div>
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; }</div>
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;};</div>
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; </div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> osRequest(&amp;sb);</div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; osRequest &lt;&lt; <a class="code" href="namespaceripple.html#a308b7ff6498ad19c844c1d36b5f0d7ae">createHTTPPost</a>(</div>
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; strHost,</div>
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; strPath,</div>
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <a class="code" href="namespaceripple.html#aa5bf57e1a7b6f174338fefbdfbc6ded6">JSONRPCRequest</a>(strMethod, jvParams, <a class="code" href="classJson_1_1Value.html">Json::Value</a>(1)),</div>
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; headers);</div>
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; }</div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;};</div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; </div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; </div>
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;<span class="comment">// Used internally by rpcClient.</span></div>
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;<span class="keyword">static</span> <a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l01452"></a><span class="lineno"><a class="line" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f"> 1452</a></span>&#160;<a class="code" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">rpcCmdLineToJson</a>(</div>
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a> <span class="keyword">const</span>&amp; args,</div>
<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a>&amp; retParams,</div>
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;{</div>
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; </div>
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;<span class="comment">// Used internally by rpcClient.</span></div>
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;<span class="keyword">static</span> <a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l01461"></a><span class="lineno"><a class="line" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f"> 1461</a></span>&#160;<a class="code" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">rpcCmdLineToJson</a>(</div>
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a> <span class="keyword">const</span>&amp; args,</div>
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a>&amp; retParams,</div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;{</div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; </div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <a class="code" href="classripple_1_1RPCParser.html">RPCParser</a> rpParser(j);</div>
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRpcParams(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eadc8f264f36b55b063c78126b335415f4">Json::arrayValue</a>);</div>
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; </div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i != args.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++)</div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; jvRpcParams.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(args[i]);</div>
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; </div>
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; retParams = <a class="code" href="classJson_1_1Value.html">Json::Value</a>(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; </div>
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; retParams[jss::method] = args[0];</div>
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; retParams[jss::params] = jvRpcParams;</div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; </div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; jvRequest = rpParser.<a class="code" href="classripple_1_1RPCParser.html#a1da7a782a9240c1b9fcce94bf6056b27">parseCommand</a>(args[0], jvRpcParams, <span class="keyword">true</span>);</div>
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; </div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <span class="keyword">auto</span> insert_api_version = [](<a class="code" href="classJson_1_1Value.html">Json::Value</a>&amp; jr) {</div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keywordflow">if</span> (jr.isObject() &amp;&amp; !jr.isMember(jss::error) &amp;&amp;</div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; !jr.isMember(jss::api_version))</div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; {</div>
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; jr[jss::api_version] = <a class="code" href="namespaceripple_1_1RPC.html#a8c4c4528421d724a8a82db708b1a761b">RPC::apiMaximumSupportedVersion</a>;</div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; }</div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; };</div>
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <a class="code" href="classripple_1_1RPCParser.html">RPCParser</a> rpParser(j);</div>
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRpcParams(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eadc8f264f36b55b063c78126b335415f4">Json::arrayValue</a>);</div>
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; </div>
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i != args.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++)</div>
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; jvRpcParams.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(args[i]);</div>
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; </div>
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; retParams = <a class="code" href="classJson_1_1Value.html">Json::Value</a>(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; </div>
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; retParams[jss::method] = args[0];</div>
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; retParams[jss::params] = jvRpcParams;</div>
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; </div>
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; jvRequest = rpParser.<a class="code" href="classripple_1_1RPCParser.html#a1da7a782a9240c1b9fcce94bf6056b27">parseCommand</a>(args[0], jvRpcParams, <span class="keyword">true</span>);</div>
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; </div>
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <span class="keyword">auto</span> insert_api_version = [](<a class="code" href="classJson_1_1Value.html">Json::Value</a>&amp; jr) {</div>
<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">if</span> (jr.isObject() &amp;&amp; !jr.isMember(jss::error) &amp;&amp;</div>
<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; !jr.isMember(jss::api_version))</div>
<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; {</div>
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; jr[jss::api_version] = <a class="code" href="namespaceripple_1_1RPC.html#a8c4c4528421d724a8a82db708b1a761b">RPC::apiMaximumSupportedVersion</a>;</div>
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; }</div>
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; };</div>
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; </div>
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a8cf96c0f2a552051fcfc78ffee60e037">isObject</a>())</div>
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; insert_api_version(jvRequest);</div>
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">isArray</a>())</div>
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/for_each.html">std::for_each</a>(jvRequest.<a class="code" href="classJson_1_1Value.html#a4544f7b3f4163ebe5da9273258936fe5">begin</a>(), jvRequest.<a class="code" href="classJson_1_1Value.html#af10a897ca5a73c578df78b434204139b">end</a>(), insert_api_version);</div>
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; </div>
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; <span class="stringliteral">&quot;RPC Request: &quot;</span> &lt;&lt; jvRequest &lt;&lt; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">return</span> jvRequest;</div>
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;}</div>
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; </div>
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a8cf96c0f2a552051fcfc78ffee60e037">isObject</a>())</div>
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; insert_api_version(jvRequest);</div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">isArray</a>())</div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/for_each.html">std::for_each</a>(jvRequest.<a class="code" href="classJson_1_1Value.html#a4544f7b3f4163ebe5da9273258936fe5">begin</a>(), jvRequest.<a class="code" href="classJson_1_1Value.html#af10a897ca5a73c578df78b434204139b">end</a>(), insert_api_version);</div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; </div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; JLOG(j.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; <span class="stringliteral">&quot;RPC Request: &quot;</span> &lt;&lt; jvRequest &lt;&lt; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="keywordflow">return</span> jvRequest;</div>
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;}</div>
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;<a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l01490"></a><span class="lineno"><a class="line" href="namespaceripple.html#aa9714d222b28553ab9f4e9baf34be4ff"> 1490</a></span>&#160;<a class="code" href="namespaceripple.html#aa9714d222b28553ab9f4e9baf34be4ff">cmdLineToJSONRPC</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a> <span class="keyword">const</span>&amp; args, <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;{</div>
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jv = <a class="code" href="classJson_1_1Value.html">Json::Value</a>(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> paramsObj = <a class="code" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">rpcCmdLineToJson</a>(args, jv, j);</div>
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; </div>
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="comment">// Re-use jv to return our formatted result.</span></div>
<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; jv.<a class="code" href="classJson_1_1Value.html#a501a4d67e6c875255c2ecc03ccd2019b">clear</a>();</div>
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; </div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;<a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l01499"></a><span class="lineno"><a class="line" href="namespaceripple.html#aa9714d222b28553ab9f4e9baf34be4ff"> 1499</a></span>&#160;<a class="code" href="namespaceripple.html#aa9714d222b28553ab9f4e9baf34be4ff">cmdLineToJSONRPC</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a> <span class="keyword">const</span>&amp; args, <a class="code" href="classbeast_1_1Journal.html">beast::Journal</a> j)</div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;{</div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jv = <a class="code" href="classJson_1_1Value.html">Json::Value</a>(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> paramsObj = <a class="code" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">rpcCmdLineToJson</a>(args, jv, j);</div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; </div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="comment">// Re-use jv to return our formatted result.</span></div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; jv.<a class="code" href="classJson_1_1Value.html#a501a4d67e6c875255c2ecc03ccd2019b">clear</a>();</div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; </div>
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="comment">// Allow parser to rewrite method.</span></div>
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; jv[jss::method] = paramsObj.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::method)</div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; ? paramsObj[jss::method].asString()</div>
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; : args[0];</div>
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; </div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="comment">// If paramsObj is not empty, put it in a [params] array.</span></div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">if</span> (paramsObj.begin() != paramsObj.end())</div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; {</div>
<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="keyword">auto</span>&amp; paramsArray = <a class="code" href="namespaceJson.html#a844d3d2c97ae1bafd1faa5a1f408514b">Json::setArray</a>(jv, jss::params);</div>
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; paramsArray.append(paramsObj);</div>
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; }</div>
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="keywordflow">if</span> (paramsObj.isMember(jss::jsonrpc))</div>
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; jv[jss::jsonrpc] = paramsObj[jss::jsonrpc];</div>
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="keywordflow">if</span> (paramsObj.isMember(jss::ripplerpc))</div>
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; jv[jss::ripplerpc] = paramsObj[jss::ripplerpc];</div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <span class="keywordflow">if</span> (paramsObj.isMember(jss::id))</div>
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; jv[jss::id] = paramsObj[jss::id];</div>
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <span class="keywordflow">return</span> jv;</div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;}</div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; </div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; </div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;int, Json::Value&gt;</a></div>
<div class="line"><a name="l01530"></a><span class="lineno"><a class="line" href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d"> 1530</a></span>&#160;<a class="code" href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d">rpcClient</a>(</div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a> <span class="keyword">const</span>&amp; args,</div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>&amp; config,</div>
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="classripple_1_1Logs.html">Logs</a>&amp; logs,</div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map&lt;std::string, std::string&gt;</a> <span class="keyword">const</span>&amp; headers)</div>
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;{</div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; static_assert(</div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167">rpcBAD_SYNTAX</a> == 1 &amp;&amp; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a6f69b339743d28bbc421fa3b31437173">rpcSUCCESS</a> == 0,</div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="stringliteral">&quot;Expect specific rpc enum values.&quot;</span>);</div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keywordflow">if</span> (args.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>())</div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordflow">return</span> {<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167">rpcBAD_SYNTAX</a>, {}}; <span class="comment">// rpcBAD_SYNTAX = print usage</span></div>
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="comment">// Allow parser to rewrite method.</span></div>
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; jv[jss::method] = paramsObj.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::method)</div>
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; ? paramsObj[jss::method].asString()</div>
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; : args[0];</div>
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; </div>
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="comment">// If paramsObj is not empty, put it in a [params] array.</span></div>
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="keywordflow">if</span> (paramsObj.begin() != paramsObj.end())</div>
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; {</div>
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="keyword">auto</span>&amp; paramsArray = <a class="code" href="namespaceJson.html#a844d3d2c97ae1bafd1faa5a1f408514b">Json::setArray</a>(jv, jss::params);</div>
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; paramsArray.append(paramsObj);</div>
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; }</div>
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <span class="keywordflow">if</span> (paramsObj.isMember(jss::jsonrpc))</div>
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; jv[jss::jsonrpc] = paramsObj[jss::jsonrpc];</div>
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="keywordflow">if</span> (paramsObj.isMember(jss::ripplerpc))</div>
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; jv[jss::ripplerpc] = paramsObj[jss::ripplerpc];</div>
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">if</span> (paramsObj.isMember(jss::id))</div>
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; jv[jss::id] = paramsObj[jss::id];</div>
<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <span class="keywordflow">return</span> jv;</div>
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;}</div>
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; </div>
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; </div>
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;int, Json::Value&gt;</a></div>
<div class="line"><a name="l01521"></a><span class="lineno"><a class="line" href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d"> 1521</a></span>&#160;<a class="code" href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d">rpcClient</a>(</div>
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a> <span class="keyword">const</span>&amp; args,</div>
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>&amp; config,</div>
<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <a class="code" href="classripple_1_1Logs.html">Logs</a>&amp; logs,</div>
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map&lt;std::string, std::string&gt;</a> <span class="keyword">const</span>&amp; headers)</div>
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;{</div>
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; static_assert(</div>
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167">rpcBAD_SYNTAX</a> == 1 &amp;&amp; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a6f69b339743d28bbc421fa3b31437173">rpcSUCCESS</a> == 0,</div>
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="stringliteral">&quot;Expect specific rpc enum values.&quot;</span>);</div>
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keywordflow">if</span> (args.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/empty.html">empty</a>())</div>
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keywordflow">return</span> {<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167">rpcBAD_SYNTAX</a>, {}}; <span class="comment">// rpcBAD_SYNTAX = print usage</span></div>
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; </div>
<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="keywordtype">int</span> nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a6f69b339743d28bbc421fa3b31437173">rpcSUCCESS</a>;</div>
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvOutput;</div>
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; </div>
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; {</div>
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRpc = <a class="code" href="classJson_1_1Value.html">Json::Value</a>(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; jvRequest = <a class="code" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">rpcCmdLineToJson</a>(args, jvRpc, logs.<a class="code" href="classripple_1_1Logs.html#a725d5db842b36c748bd9da3401da3128">journal</a>(<span class="stringliteral">&quot;RPCParser&quot;</span>));</div>
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; </div>
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <span class="keywordtype">int</span> nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a6f69b339743d28bbc421fa3b31437173">rpcSUCCESS</a>;</div>
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvOutput;</div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; </div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; {</div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRpc = <a class="code" href="classJson_1_1Value.html">Json::Value</a>(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a>);</div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; jvRequest = <a class="code" href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">rpcCmdLineToJson</a>(args, jvRpc, logs.<a class="code" href="classripple_1_1Logs.html#a725d5db842b36c748bd9da3401da3128">journal</a>(<span class="stringliteral">&quot;RPCParser&quot;</span>));</div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; </div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; {</div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; jvOutput = jvRequest;</div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; jvOutput[<span class="stringliteral">&quot;rpc&quot;</span>] = jvRpc;</div>
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; }</div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; {</div>
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a> setup;</div>
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; {</div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; setup = <a class="code" href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">setup_ServerHandler</a>(</div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; config,</div>
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <a class="code" href="classbeast_1_1basic__logstream.html">beast::logstream</a>{logs.<a class="code" href="classripple_1_1Logs.html#a725d5db842b36c748bd9da3401da3128">journal</a>(<span class="stringliteral">&quot;HTTPClient&quot;</span>).warn()});</div>
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; }</div>
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a> <span class="keyword">const</span>&amp;)</div>
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; {</div>
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <span class="comment">// ignore any exceptions, so the command</span></div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="comment">// line client works without a config file</span></div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; }</div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; </div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keywordflow">if</span> (config.<a class="code" href="classripple_1_1Config.html#a568c380fe9c0a28afc8b09ab9174c864">rpc_ip</a>)</div>
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; {</div>
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a1cfba82de3995bc70e297f18eee2dcef">ip</a> = config.<a class="code" href="classripple_1_1Config.html#a568c380fe9c0a28afc8b09ab9174c864">rpc_ip</a>-&gt;address().to_string();</div>
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a71b103879153f77cac77ef88f3d3fb81">port</a> = config.<a class="code" href="classripple_1_1Config.html#a568c380fe9c0a28afc8b09ab9174c864">rpc_ip</a>-&gt;port();</div>
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; }</div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; </div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvParams(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eadc8f264f36b55b063c78126b335415f4">Json::arrayValue</a>);</div>
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; </div>
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; <span class="keywordflow">if</span> (!setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a407fa705ff2453644d66ff9236124043">admin_user</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>())</div>
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; jvRequest[<span class="stringliteral">&quot;admin_user&quot;</span>] = setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a407fa705ff2453644d66ff9236124043">admin_user</a>;</div>
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; </div>
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">if</span> (!setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a34a533292e151fe67b0daa142369841f">admin_password</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>())</div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; jvRequest[<span class="stringliteral">&quot;admin_password&quot;</span>] = setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a34a533292e151fe67b0daa142369841f">admin_password</a>;</div>
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; </div>
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a8cf96c0f2a552051fcfc78ffee60e037">isObject</a>())</div>
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; jvParams.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(jvRequest);</div>
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">isArray</a>())</div>
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; {</div>
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceJson.html#ab1488c31a37eea2d37f36a0961372572">Json::UInt</a> i = 0; i &lt; jvRequest.<a class="code" href="classJson_1_1Value.html#a23c7027ca674f989f90564d63ef36c74">size</a>(); ++i)</div>
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; jvParams.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(jvRequest[i]);</div>
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; }</div>
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; </div>
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; {</div>
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; boost::asio::io_service isService;</div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <a class="code" href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2">RPCCall::fromNetwork</a>(</div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; isService,</div>
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a1cfba82de3995bc70e297f18eee2dcef">ip</a>,</div>
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a71b103879153f77cac77ef88f3d3fb81">port</a>,</div>
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a5bb3e4c3f647d26ffc9bdeb011c776f8">user</a>,</div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#adae7271497ad30628f2c5d7ffbca9672">password</a>,</div>
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="stringliteral">&quot;&quot;</span>,</div>
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; jvRequest.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(</div>
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; jss::method) <span class="comment">// Allow parser to rewrite method.</span></div>
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; ? jvRequest[jss::method].<a class="code" href="classJson_1_1Value.html#ab0d86bf425efefd03513e8dbfaca317b">asString</a>()</div>
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; : jvRequest.<a class="code" href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">isArray</a>() ? <span class="stringliteral">&quot;batch&quot;</span> : args[0],</div>
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; jvParams, <span class="comment">// Parsed, execute.</span></div>
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a44fccc2b575144cf16688e0510446bd4">secure</a> != 0, <span class="comment">// Use SSL</span></div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; config.<a class="code" href="classripple_1_1Config.html#a9162d3ba9894fc8eb804f573cc631dad">quiet</a>(),</div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; logs,</div>
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/bind.html">std::bind</a>(</div>
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <a class="code" href="structripple_1_1RPCCallImp.html#a0d0dc01bdca432ac14e8c67728199fb4">RPCCallImp::callRPCHandler</a>,</div>
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; &amp;jvOutput,</div>
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; std::placeholders::_1),</div>
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; headers);</div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; isService.run(); <span class="comment">// This blocks until there are no more</span></div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="comment">// outstanding async calls.</span></div>
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; }</div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(<span class="stringliteral">&quot;result&quot;</span>))</div>
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; {</div>
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="comment">// Had a successful JSON-RPC 2.0 call.</span></div>
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; jvOutput = jvOutput[<span class="stringliteral">&quot;result&quot;</span>];</div>
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; </div>
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="comment">// jvOutput may report a server side error.</span></div>
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; <span class="comment">// It should report &quot;status&quot;.</span></div>
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; }</div>
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; {</div>
<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="comment">// Transport error.</span></div>
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRpcError = jvOutput;</div>
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; </div>
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; jvOutput = <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932ac1a6dff600f246dd125ce9d6d02eeeba">rpcJSON_RPC</a>);</div>
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; jvOutput[<span class="stringliteral">&quot;result&quot;</span>] = jvRpcError;</div>
<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; {</div>
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; jvOutput = jvRequest;</div>
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; jvOutput[<span class="stringliteral">&quot;rpc&quot;</span>] = jvRpc;</div>
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; }</div>
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; {</div>
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html">ServerHandler::Setup</a> setup;</div>
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; {</div>
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; setup = <a class="code" href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">setup_ServerHandler</a>(</div>
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; config,</div>
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <a class="code" href="classbeast_1_1basic__logstream.html">beast::logstream</a>{logs.<a class="code" href="classripple_1_1Logs.html#a725d5db842b36c748bd9da3401da3128">journal</a>(<span class="stringliteral">&quot;HTTPClient&quot;</span>).warn()});</div>
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; }</div>
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a> <span class="keyword">const</span>&amp;)</div>
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; {</div>
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="comment">// ignore any exceptions, so the command</span></div>
<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="comment">// line client works without a config file</span></div>
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; }</div>
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; </div>
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <span class="keywordflow">if</span> (config.<a class="code" href="classripple_1_1Config.html#a568c380fe9c0a28afc8b09ab9174c864">rpc_ip</a>)</div>
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; {</div>
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a1cfba82de3995bc70e297f18eee2dcef">ip</a> = config.<a class="code" href="classripple_1_1Config.html#a568c380fe9c0a28afc8b09ab9174c864">rpc_ip</a>-&gt;address().to_string();</div>
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a71b103879153f77cac77ef88f3d3fb81">port</a> = config.<a class="code" href="classripple_1_1Config.html#a568c380fe9c0a28afc8b09ab9174c864">rpc_ip</a>-&gt;port();</div>
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; }</div>
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; </div>
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvParams(<a class="code" href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eadc8f264f36b55b063c78126b335415f4">Json::arrayValue</a>);</div>
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; </div>
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keywordflow">if</span> (!setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a407fa705ff2453644d66ff9236124043">admin_user</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>())</div>
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; jvRequest[<span class="stringliteral">&quot;admin_user&quot;</span>] = setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a407fa705ff2453644d66ff9236124043">admin_user</a>;</div>
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; </div>
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordflow">if</span> (!setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a34a533292e151fe67b0daa142369841f">admin_password</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>())</div>
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; jvRequest[<span class="stringliteral">&quot;admin_password&quot;</span>] = setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a34a533292e151fe67b0daa142369841f">admin_password</a>;</div>
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; </div>
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a8cf96c0f2a552051fcfc78ffee60e037">isObject</a>())</div>
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; jvParams.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(jvRequest);</div>
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (jvRequest.<a class="code" href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">isArray</a>())</div>
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; {</div>
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceJson.html#ab1488c31a37eea2d37f36a0961372572">Json::UInt</a> i = 0; i &lt; jvRequest.<a class="code" href="classJson_1_1Value.html#a23c7027ca674f989f90564d63ef36c74">size</a>(); ++i)</div>
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; jvParams.<a class="code" href="classJson_1_1Value.html#a7e49ac977e4bcf59745a09d426669f75">append</a>(jvRequest[i]);</div>
<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; }</div>
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; </div>
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; {</div>
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; boost::asio::io_service isService;</div>
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <a class="code" href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2">RPCCall::fromNetwork</a>(</div>
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; isService,</div>
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a1cfba82de3995bc70e297f18eee2dcef">ip</a>,</div>
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a71b103879153f77cac77ef88f3d3fb81">port</a>,</div>
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a5bb3e4c3f647d26ffc9bdeb011c776f8">user</a>,</div>
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#adae7271497ad30628f2c5d7ffbca9672">password</a>,</div>
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="stringliteral">&quot;&quot;</span>,</div>
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; jvRequest.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(</div>
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; jss::method) <span class="comment">// Allow parser to rewrite method.</span></div>
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; ? jvRequest[jss::method].<a class="code" href="classJson_1_1Value.html#ab0d86bf425efefd03513e8dbfaca317b">asString</a>()</div>
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; : jvRequest.<a class="code" href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">isArray</a>() ? <span class="stringliteral">&quot;batch&quot;</span> : args[0],</div>
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; jvParams, <span class="comment">// Parsed, execute.</span></div>
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; setup.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">client</a>.<a class="code" href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a44fccc2b575144cf16688e0510446bd4">secure</a> != 0, <span class="comment">// Use SSL</span></div>
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; config.<a class="code" href="classripple_1_1Config.html#a9162d3ba9894fc8eb804f573cc631dad">quiet</a>(),</div>
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; logs,</div>
<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/bind.html">std::bind</a>(</div>
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; <a class="code" href="structripple_1_1RPCCallImp.html#a0d0dc01bdca432ac14e8c67728199fb4">RPCCallImp::callRPCHandler</a>,</div>
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; &amp;jvOutput,</div>
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; std::placeholders::_1),</div>
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; headers);</div>
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; isService.run(); <span class="comment">// This blocks until there are no more</span></div>
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <span class="comment">// outstanding async calls.</span></div>
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; }</div>
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(<span class="stringliteral">&quot;result&quot;</span>))</div>
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; {</div>
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <span class="comment">// Had a successful JSON-RPC 2.0 call.</span></div>
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; jvOutput = jvOutput[<span class="stringliteral">&quot;result&quot;</span>];</div>
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; </div>
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; <span class="comment">// jvOutput may report a server side error.</span></div>
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="comment">// It should report &quot;status&quot;.</span></div>
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; }</div>
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; {</div>
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <span class="comment">// Transport error.</span></div>
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRpcError = jvOutput;</div>
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; </div>
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; jvOutput = <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932ac1a6dff600f246dd125ce9d6d02eeeba">rpcJSON_RPC</a>);</div>
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; jvOutput[<span class="stringliteral">&quot;result&quot;</span>] = jvRpcError;</div>
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; }</div>
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; </div>
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <span class="comment">// If had an error, supply invocation in result.</span></div>
<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; {</div>
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; jvOutput[<span class="stringliteral">&quot;rpc&quot;</span>] =</div>
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; jvRpc; <span class="comment">// How the command was seen as method + params.</span></div>
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; jvOutput[<span class="stringliteral">&quot;request_sent&quot;</span>] =</div>
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; jvRequest; <span class="comment">// How the command was translated.</span></div>
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; }</div>
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; </div>
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="comment">// If had an error, supply invocation in result.</span></div>
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; {</div>
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; jvOutput[<span class="stringliteral">&quot;rpc&quot;</span>] =</div>
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; jvRpc; <span class="comment">// How the command was seen as method + params.</span></div>
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; jvOutput[<span class="stringliteral">&quot;request_sent&quot;</span>] =</div>
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; jvRequest; <span class="comment">// How the command was translated.</span></div>
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</div>
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; }</div>
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; </div>
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; {</div>
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; jvOutput[jss::status] = <span class="stringliteral">&quot;error&quot;</span>;</div>
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error_code))</div>
<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; nRet = <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/stol.html">std::stoi</a>(jvOutput[jss::error_code].asString());</div>
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (jvOutput[jss::error].isMember(jss::error_code))</div>
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; nRet =</div>
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/stol.html">std::stoi</a>(jvOutput[jss::error][jss::error_code].asString());</div>
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167">rpcBAD_SYNTAX</a>;</div>
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; }</div>
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; </div>
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <span class="comment">// YYY We could have a command line flag for single line output for</span></div>
<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="comment">// scripts. YYY We would intercept output here and simplify it.</span></div>
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; }</div>
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <span class="keywordflow">catch</span> (RequestNotParseable&amp; e)</div>
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; {</div>
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; jvOutput = <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>);</div>
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; jvOutput[<span class="stringliteral">&quot;error_what&quot;</span>] = e.what();</div>
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>;</div>
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; }</div>
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&amp; e)</div>
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; {</div>
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; jvOutput = <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>);</div>
<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; jvOutput[<span class="stringliteral">&quot;error_what&quot;</span>] = e.<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>();</div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>;</div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; }</div>
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; </div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keywordflow">return</span> {nRet, std::move(jvOutput)};</div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;}</div>
<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; </div>
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; </div>
<div class="line"><a name="l01678"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPCCall.html"> 1678</a></span>&#160;<span class="keyword">namespace </span>RPCCall {</div>
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; </div>
<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;<span class="keywordtype">int</span></div>
<div class="line"><a name="l01681"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPCCall.html#a1a95d65d49327d8f4cc8c1bf142cc0eb"> 1681</a></span>&#160;<a class="code" href="namespaceripple_1_1RPCCall.html#a1a95d65d49327d8f4cc8c1bf142cc0eb">fromCommandLine</a>(</div>
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>&amp; config,</div>
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a>&amp; vCmd,</div>
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <a class="code" href="classripple_1_1Logs.html">Logs</a>&amp; logs)</div>
<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;{</div>
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> result = <a class="code" href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d">rpcClient</a>(vCmd, config, logs);</div>
<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; </div>
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/cout.html">std::cout</a> &lt;&lt; result.second.toStyledString();</div>
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; </div>
<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">return</span> result.first;</div>
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;}</div>
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; </div>
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; </div>
<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l01696"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2"> 1696</a></span>&#160;<a class="code" href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2">fromNetwork</a>(</div>
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; boost::asio::io_service&amp; io_service,</div>
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strIp,</div>
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint16_t</a> iPort,</div>
<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strUsername,</div>
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strPassword,</div>
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strPath,</div>
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strMethod,</div>
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span>&amp; jvParams,</div>
<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> bSSL,</div>
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet,</div>
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <a class="code" href="classripple_1_1Logs.html">Logs</a>&amp; logs,</div>
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="code" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span>&amp; jvInput)&gt; callbackFuncP,</div>
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map&lt;std::string, std::string&gt;</a> headers)</div>
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;{</div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keyword">auto</span> j = logs.<a class="code" href="classripple_1_1Logs.html#a725d5db842b36c748bd9da3401da3128">journal</a>(<span class="stringliteral">&quot;HTTPClient&quot;</span>);</div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; </div>
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="comment">// Connect to localhost</span></div>
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> (!quiet)</div>
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; {</div>
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; JLOG(j.info()) &lt;&lt; (bSSL ? <span class="stringliteral">&quot;Securely connecting to &quot;</span> : <span class="stringliteral">&quot;Connecting to &quot;</span>)</div>
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; &lt;&lt; strIp &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; iPort &lt;&lt; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; }</div>
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; </div>
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <span class="comment">// HTTP basic authentication</span></div>
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; headers[<span class="stringliteral">&quot;Authorization&quot;</span>] =</div>
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(<span class="stringliteral">&quot;Basic &quot;</span>) + <a class="code" href="namespaceripple.html#a9e4e400df889dc7cb9df0f859a8e4f18">base64_encode</a>(strUsername + <span class="stringliteral">&quot;:&quot;</span> + strPassword);</div>
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; }</div>
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; </div>
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error))</div>
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; {</div>
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; jvOutput[jss::status] = <span class="stringliteral">&quot;error&quot;</span>;</div>
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; <span class="keywordflow">if</span> (jvOutput.<a class="code" href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">isMember</a>(jss::error_code))</div>
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; nRet = <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/stol.html">std::stoi</a>(jvOutput[jss::error_code].asString());</div>
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (jvOutput[jss::error].isMember(jss::error_code))</div>
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; nRet =</div>
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/stol.html">std::stoi</a>(jvOutput[jss::error][jss::error_code].asString());</div>
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167">rpcBAD_SYNTAX</a>;</div>
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; }</div>
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; </div>
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="comment">// YYY We could have a command line flag for single line output for</span></div>
<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <span class="comment">// scripts. YYY We would intercept output here and simplify it.</span></div>
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; }</div>
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; <span class="keywordflow">catch</span> (RequestNotParseable&amp; e)</div>
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; {</div>
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; jvOutput = <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>);</div>
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; jvOutput[<span class="stringliteral">&quot;error_what&quot;</span>] = e.what();</div>
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>;</div>
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; }</div>
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&amp; e)</div>
<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; {</div>
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; jvOutput = <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>);</div>
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; jvOutput[<span class="stringliteral">&quot;error_what&quot;</span>] = e.<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>();</div>
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; nRet = <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>;</div>
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; }</div>
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; </div>
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <span class="keywordflow">return</span> {nRet, std::move(jvOutput)};</div>
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;}</div>
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; </div>
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; </div>
<div class="line"><a name="l01669"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPCCall.html"> 1669</a></span>&#160;<span class="keyword">namespace </span>RPCCall {</div>
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; </div>
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;<span class="keywordtype">int</span></div>
<div class="line"><a name="l01672"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPCCall.html#a1a95d65d49327d8f4cc8c1bf142cc0eb"> 1672</a></span>&#160;<a class="code" href="namespaceripple_1_1RPCCall.html#a1a95d65d49327d8f4cc8c1bf142cc0eb">fromCommandLine</a>(</div>
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <a class="code" href="classripple_1_1Config.html">Config</a> <span class="keyword">const</span>&amp; config,</div>
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;std::string&gt;</a>&amp; vCmd,</div>
<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; <a class="code" href="classripple_1_1Logs.html">Logs</a>&amp; logs)</div>
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;{</div>
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> result = <a class="code" href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d">rpcClient</a>(vCmd, config, logs);</div>
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; </div>
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/cout.html">std::cout</a> &lt;&lt; result.second.toStyledString();</div>
<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; </div>
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keywordflow">return</span> result.first;</div>
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;}</div>
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; </div>
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;<span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; </div>
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l01687"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2"> 1687</a></span>&#160;<a class="code" href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2">fromNetwork</a>(</div>
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; boost::asio::io_service&amp; io_service,</div>
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strIp,</div>
<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keyword">const</span> <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint16_t</a> iPort,</div>
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strUsername,</div>
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strPassword,</div>
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strPath,</div>
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; strMethod,</div>
<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span>&amp; jvParams,</div>
<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> bSSL,</div>
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> quiet,</div>
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <a class="code" href="classripple_1_1Logs.html">Logs</a>&amp; logs,</div>
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">std::function</a>&lt;<span class="keywordtype">void</span>(<a class="code" href="classJson_1_1Value.html">Json::Value</a> <span class="keyword">const</span>&amp; jvInput)&gt; callbackFuncP,</div>
<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/unordered_map.html">std::unordered_map&lt;std::string, std::string&gt;</a> headers)</div>
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;{</div>
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keyword">auto</span> j = logs.<a class="code" href="classripple_1_1Logs.html#a725d5db842b36c748bd9da3401da3128">journal</a>(<span class="stringliteral">&quot;HTTPClient&quot;</span>);</div>
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; </div>
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="comment">// Connect to localhost</span></div>
<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">if</span> (!quiet)</div>
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; {</div>
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; JLOG(j.info()) &lt;&lt; (bSSL ? <span class="stringliteral">&quot;Securely connecting to &quot;</span> : <span class="stringliteral">&quot;Connecting to &quot;</span>)</div>
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; &lt;&lt; strIp &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; iPort &lt;&lt; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; }</div>
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; </div>
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="comment">// HTTP basic authentication</span></div>
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; headers[<span class="stringliteral">&quot;Authorization&quot;</span>] =</div>
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(<span class="stringliteral">&quot;Basic &quot;</span>) + <a class="code" href="namespaceripple.html#a9e4e400df889dc7cb9df0f859a8e4f18">base64_encode</a>(strUsername + <span class="stringliteral">&quot;:&quot;</span> + strPassword);</div>
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; </div>
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="comment">// Send request</span></div>
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; </div>
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="comment">// Number of bytes to try to receive if no</span></div>
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="comment">// Content-Length header received</span></div>
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; constexpr <span class="keyword">auto</span> RPC_REPLY_MAX_BYTES = <a class="code" href="namespaceripple.html#a13d7c6c34d30731bbc221f629e03f8db">megabytes</a>(256);</div>
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; </div>
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keyword">using namespace </span>std::chrono_literals;</div>
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="keyword">auto</span> constexpr RPC_NOTIFY = 10min;</div>
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; </div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="comment">// Send request</span></div>
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; </div>
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; <span class="comment">// Number of bytes to try to receive if no</span></div>
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="comment">// Content-Length header received</span></div>
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; constexpr <span class="keyword">auto</span> RPC_REPLY_MAX_BYTES = <a class="code" href="namespaceripple.html#a13d7c6c34d30731bbc221f629e03f8db">megabytes</a>(256);</div>
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; </div>
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keyword">using namespace </span>std::chrono_literals;</div>
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <span class="keyword">auto</span> constexpr RPC_NOTIFY = 10min;</div>
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; </div>
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <a class="code" href="classripple_1_1HTTPClient.html#a6655540e8a9d9255e16358b8edfeb9a5">HTTPClient::request</a>(</div>
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; bSSL,</div>
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; io_service,</div>
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; strIp,</div>
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; iPort,</div>
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/bind.html">std::bind</a>(</div>
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; &amp;<a class="code" href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8">RPCCallImp::onRequest</a>,</div>
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; strMethod,</div>
<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; jvParams,</div>
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; headers,</div>
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; strPath,</div>
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; std::placeholders::_1,</div>
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; std::placeholders::_2,</div>
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <a class="code" href="classripple_1_1HTTPClient.html#a6655540e8a9d9255e16358b8edfeb9a5">HTTPClient::request</a>(</div>
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; bSSL,</div>
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; io_service,</div>
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; strIp,</div>
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; iPort,</div>
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/bind.html">std::bind</a>(</div>
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; &amp;<a class="code" href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8">RPCCallImp::onRequest</a>,</div>
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; strMethod,</div>
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; jvParams,</div>
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; headers,</div>
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; strPath,</div>
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; std::placeholders::_1,</div>
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; std::placeholders::_2,</div>
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; j),</div>
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; RPC_REPLY_MAX_BYTES,</div>
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; RPC_NOTIFY,</div>
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/bind.html">std::bind</a>(</div>
<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; &amp;<a class="code" href="structripple_1_1RPCCallImp.html#ab7421486f8b9b70783fab86e3a4cd382">RPCCallImp::onResponse</a>,</div>
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; callbackFuncP,</div>
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; std::placeholders::_1,</div>
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; std::placeholders::_2,</div>
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; std::placeholders::_3,</div>
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; j),</div>
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; RPC_REPLY_MAX_BYTES,</div>
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; RPC_NOTIFY,</div>
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/bind.html">std::bind</a>(</div>
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; &amp;<a class="code" href="structripple_1_1RPCCallImp.html#ab7421486f8b9b70783fab86e3a4cd382">RPCCallImp::onResponse</a>,</div>
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; callbackFuncP,</div>
<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; std::placeholders::_1,</div>
<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; std::placeholders::_2,</div>
<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; std::placeholders::_3,</div>
<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; j),</div>
<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; j);</div>
<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;}</div>
<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; </div>
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;} <span class="comment">// namespace RPCCall</span></div>
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; </div>
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; j);</div>
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;}</div>
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; </div>
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;} <span class="comment">// namespace RPCCall</span></div>
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; </div>
<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassripple_1_1RPCParser_html_ab42eb3661c8c87fbc3ec71e1873b5f05"><div class="ttname"><a href="classripple_1_1RPCParser.html#ab42eb3661c8c87fbc3ec71e1873b5f05">ripple::RPCParser::parseAsIs</a></div><div class="ttdeci">Json::Value parseAsIs(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00175">RPCCall.cpp:175</a></div></div>
<div class="ttc" id="afor_each_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/for_each.html">std::for_each</a></div><div class="ttdeci">T for_each(T... args)</div></div>
@@ -1888,10 +1879,10 @@ $(function() {
<div class="ttc" id="aclassripple_1_1RPCParser_html_a7109c18d3a6300b7f95ae75866b0ac1c"><div class="ttname"><a href="classripple_1_1RPCParser.html#a7109c18d3a6300b7f95ae75866b0ac1c">ripple::RPCParser::j_</a></div><div class="ttdeci">const beast::Journal j_</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00094">RPCCall.cpp:94</a></div></div>
<div class="ttc" id="astructripple_1_1ServerHandlerImp_1_1Setup_1_1client__t_html_a1cfba82de3995bc70e297f18eee2dcef"><div class="ttname"><a href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a1cfba82de3995bc70e297f18eee2dcef">ripple::ServerHandlerImp::Setup::client_t::ip</a></div><div class="ttdeci">std::string ip</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8h_source.html#l00062">ServerHandlerImp.h:62</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_abae0be083a6bc346ed4974512761ae04"><div class="ttname"><a href="classripple_1_1RPCParser.html#abae0be083a6bc346ed4974512761ae04">ripple::RPCParser::parsePeerReservationsAdd</a></div><div class="ttdeci">Json::Value parsePeerReservationsAdd(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00950">RPCCall.cpp:950</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9717a8236d67d262b4e5273712ac545c"><div class="ttname"><a href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">ripple::setup_ServerHandler</a></div><div class="ttdeci">ServerHandler::Setup setup_ServerHandler(Config const &amp;config, std::ostream &amp;&amp;log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01211">ServerHandlerImp.cpp:1211</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9717a8236d67d262b4e5273712ac545c"><div class="ttname"><a href="namespaceripple.html#a9717a8236d67d262b4e5273712ac545c">ripple::setup_ServerHandler</a></div><div class="ttdeci">ServerHandler::Setup setup_ServerHandler(Config const &amp;config, std::ostream &amp;&amp;log)</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8cpp_source.html#l01235">ServerHandlerImp.cpp:1235</a></div></div>
<div class="ttc" id="acout_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/cout.html">std::cout</a></div></div>
<div class="ttc" id="anamespaceripple_html_adc1f8a2c9b47d7c08e671ad3473e9d3a"><div class="ttname"><a href="namespaceripple.html#adc1f8a2c9b47d7c08e671ad3473e9d3a">ripple::publicKeyType</a></div><div class="ttdeci">std::optional&lt; KeyType &gt; publicKeyType(Slice const &amp;slice)</div><div class="ttdoc">Returns the type of public key.</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8cpp_source.html#l00207">PublicKey.cpp:207</a></div></div>
<div class="ttc" id="astructripple_1_1RPCCallImp_html_a932251660d12e31109ecaeb2b7a78ff8"><div class="ttname"><a href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8">ripple::RPCCallImp::onRequest</a></div><div class="ttdeci">static void onRequest(std::string const &amp;strMethod, Json::Value const &amp;jvParams, std::unordered_map&lt; std::string, std::string &gt; const &amp;headers, std::string const &amp;strPath, boost::asio::streambuf &amp;sb, std::string const &amp;strHost, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01437">RPCCall.cpp:1437</a></div></div>
<div class="ttc" id="astructripple_1_1RPCCallImp_html_a932251660d12e31109ecaeb2b7a78ff8"><div class="ttname"><a href="structripple_1_1RPCCallImp.html#a932251660d12e31109ecaeb2b7a78ff8">ripple::RPCCallImp::onRequest</a></div><div class="ttdeci">static void onRequest(std::string const &amp;strMethod, Json::Value const &amp;jvParams, std::unordered_map&lt; std::string, std::string &gt; const &amp;headers, std::string const &amp;strPath, boost::asio::streambuf &amp;sb, std::string const &amp;strHost, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01428">RPCCall.cpp:1428</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint&lt; 256 &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_a2023851fe572d0076968093699975f87"><div class="ttname"><a href="classripple_1_1RPCParser.html#a2023851fe572d0076968093699975f87">ripple::RPCParser::parseGatewayBalances</a></div><div class="ttdeci">Json::Value parseGatewayBalances(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01152">RPCCall.cpp:1152</a></div></div>
<div class="ttc" id="anamespaceripple_html_a88ddae278aa600b476661629e3b930e8"><div class="ttname"><a href="namespaceripple.html#a88ddae278aa600b476661629e3b930e8">ripple::isRpcError</a></div><div class="ttdeci">bool isRpcError(Json::Value jvResult)</div><div class="ttdef"><b>Definition:</b> <a href="RPCErr_8cpp_source.html#l00038">RPCErr.cpp:38</a></div></div>
@@ -1913,7 +1904,6 @@ $(function() {
<div class="ttc" id="aclassripple_1_1RPCParser_html_af9349d02dea03fedc423b13c5e7eb125"><div class="ttname"><a href="classripple_1_1RPCParser.html#af9349d02dea03fedc423b13c5e7eb125">ripple::RPCParser::parseTxAccount</a></div><div class="ttdeci">Json::Value parseTxAccount(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00340">RPCCall.cpp:340</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a78e5ffef07cc85fedafde770039313bc"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a78e5ffef07cc85fedafde770039313bc">ripple::rpcPUBLIC_MALFORMED</a></div><div class="ttdeci">@ rpcPUBLIC_MALFORMED</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00117">ErrorCodes.h:117</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_aac9555946dbc143213074350544d23dd"><div class="ttname"><a href="classripple_1_1RPCParser.html#aac9555946dbc143213074350544d23dd">ripple::RPCParser::parseTx</a></div><div class="ttdeci">Json::Value parseTx(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01083">RPCCall.cpp:1083</a></div></div>
<div class="ttc" id="ato_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a></div><div class="ttdeci">T to_string(T... args)</div></div>
<div class="ttc" id="aarray_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/array.html">array</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a23c7027ca674f989f90564d63ef36c74"><div class="ttname"><a href="classJson_1_1Value.html#a23c7027ca674f989f90564d63ef36c74">Json::Value::size</a></div><div class="ttdeci">UInt size() const</div><div class="ttdoc">Number of values in array or object.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00706">json_value.cpp:706</a></div></div>
<div class="ttc" id="astructripple_1_1ServerHandlerImp_1_1Setup_html_a0917334d1bcd42466056317511b70200"><div class="ttname"><a href="structripple_1_1ServerHandlerImp_1_1Setup.html#a0917334d1bcd42466056317511b70200">ripple::ServerHandlerImp::Setup::client</a></div><div class="ttdeci">client_t client</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8h_source.html#l00071">ServerHandlerImp.h:71</a></div></div>
@@ -1935,7 +1925,7 @@ $(function() {
<div class="ttc" id="anamespaceJson_html_a844d3d2c97ae1bafd1faa5a1f408514b"><div class="ttname"><a href="namespaceJson.html#a844d3d2c97ae1bafd1faa5a1f408514b">Json::setArray</a></div><div class="ttdeci">Json::Value &amp; setArray(Json::Value &amp;, Json::StaticString const &amp;key)</div><div class="ttdoc">Add a new subarray at a named key in a Json object.</div><div class="ttdef"><b>Definition:</b> <a href="Object_8h_source.html#l00414">Object.h:414</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a60badd0db2ef5b154d6101fe7b845e39"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a60badd0db2ef5b154d6101fe7b845e39">ripple::rpcCHANNEL_AMT_MALFORMED</a></div><div class="ttdeci">@ rpcCHANNEL_AMT_MALFORMED</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00101">ErrorCodes.h:101</a></div></div>
<div class="ttc" id="abasic_ostringstream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="anamespaceripple_1_1RPCCall_html_a1a95d65d49327d8f4cc8c1bf142cc0eb"><div class="ttname"><a href="namespaceripple_1_1RPCCall.html#a1a95d65d49327d8f4cc8c1bf142cc0eb">ripple::RPCCall::fromCommandLine</a></div><div class="ttdeci">int fromCommandLine(Config const &amp;config, const std::vector&lt; std::string &gt; &amp;vCmd, Logs &amp;logs)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01681">RPCCall.cpp:1681</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPCCall_html_a1a95d65d49327d8f4cc8c1bf142cc0eb"><div class="ttname"><a href="namespaceripple_1_1RPCCall.html#a1a95d65d49327d8f4cc8c1bf142cc0eb">ripple::RPCCall::fromCommandLine</a></div><div class="ttdeci">int fromCommandLine(Config const &amp;config, const std::vector&lt; std::string &gt; &amp;vCmd, Logs &amp;logs)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01672">RPCCall.cpp:1672</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_a3eb4dc0381e1da47f10a0eb27f713bda"><div class="ttname"><a href="classripple_1_1RPCParser.html#a3eb4dc0381e1da47f10a0eb27f713bda">ripple::RPCParser::parseEvented</a></div><div class="ttdeci">Json::Value parseEvented(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00515">RPCCall.cpp:515</a></div></div>
<div class="ttc" id="astructripple_1_1ServerHandlerImp_1_1Setup_1_1client__t_html_a34a533292e151fe67b0daa142369841f"><div class="ttname"><a href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#a34a533292e151fe67b0daa142369841f">ripple::ServerHandlerImp::Setup::client_t::admin_password</a></div><div class="ttdeci">std::string admin_password</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8h_source.html#l00067">ServerHandlerImp.h:67</a></div></div>
<div class="ttc" id="astructripple_1_1RPCCallImp_html_a32512463f0b70d4fcc36aec0536ab066"><div class="ttname"><a href="structripple_1_1RPCCallImp.html#a32512463f0b70d4fcc36aec0536ab066">ripple::RPCCallImp::RPCCallImp</a></div><div class="ttdeci">RPCCallImp()=default</div></div>
@@ -1947,13 +1937,13 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a89a147d7376535a497c85024dabc9167">ripple::rpcBAD_SYNTAX</a></div><div class="ttdeci">@ rpcBAD_SYNTAX</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00046">ErrorCodes.h:46</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a501a4d67e6c875255c2ecc03ccd2019b"><div class="ttname"><a href="classJson_1_1Value.html#a501a4d67e6c875255c2ecc03ccd2019b">Json::Value::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Remove all object members and array elements.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00753">json_value.cpp:753</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a2e316006c45784996f1c36ff28ecf795"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a2e316006c45784996f1c36ff28ecf795">ripple::rpcUNKNOWN_COMMAND</a></div><div class="ttdeci">@ rpcUNKNOWN_COMMAND</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00085">ErrorCodes.h:85</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa9714d222b28553ab9f4e9baf34be4ff"><div class="ttname"><a href="namespaceripple.html#aa9714d222b28553ab9f4e9baf34be4ff">ripple::cmdLineToJSONRPC</a></div><div class="ttdeci">Json::Value cmdLineToJSONRPC(std::vector&lt; std::string &gt; const &amp;args, beast::Journal j)</div><div class="ttdoc">Given a rippled command line, return the corresponding JSON.</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01499">RPCCall.cpp:1499</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa9714d222b28553ab9f4e9baf34be4ff"><div class="ttname"><a href="namespaceripple.html#aa9714d222b28553ab9f4e9baf34be4ff">ripple::cmdLineToJSONRPC</a></div><div class="ttdeci">Json::Value cmdLineToJSONRPC(std::vector&lt; std::string &gt; const &amp;args, beast::Journal j)</div><div class="ttdoc">Given a rippled command line, return the corresponding JSON.</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01490">RPCCall.cpp:1490</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_a1f47a83da46a9a0f5409db752d193525"><div class="ttname"><a href="classripple_1_1RPCParser.html#a1f47a83da46a9a0f5409db752d193525">ripple::RPCParser::parseDownloadShard</a></div><div class="ttdeci">Json::Value parseDownloadShard(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00186">RPCCall.cpp:186</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_a468d00891c9d5998320ffe19b2434542"><div class="ttname"><a href="classripple_1_1RPCParser.html#a468d00891c9d5998320ffe19b2434542">ripple::RPCParser::parseDepositAuthorized</a></div><div class="ttdeci">Json::Value parseDepositAuthorized(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00501">RPCCall.cpp:501</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab72afa7b2b33324b108c550dbc0a3c1f"><div class="ttname"><a href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">ripple::rpcCmdLineToJson</a></div><div class="ttdeci">static Json::Value rpcCmdLineToJson(std::vector&lt; std::string &gt; const &amp;args, Json::Value &amp;retParams, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01461">RPCCall.cpp:1461</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab72afa7b2b33324b108c550dbc0a3c1f"><div class="ttname"><a href="namespaceripple.html#ab72afa7b2b33324b108c550dbc0a3c1f">ripple::rpcCmdLineToJson</a></div><div class="ttdeci">static Json::Value rpcCmdLineToJson(std::vector&lt; std::string &gt; const &amp;args, Json::Value &amp;retParams, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01452">RPCCall.cpp:1452</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a74b305583ec3aacf4f9dd06e799dc265"><div class="ttname"><a href="classJson_1_1Value.html#a74b305583ec3aacf4f9dd06e799dc265">Json::Value::asUInt</a></div><div class="ttdeci">UInt asUInt() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00545">json_value.cpp:545</a></div></div>
<div class="ttc" id="astructripple_1_1RPCCallImp_html_ab7421486f8b9b70783fab86e3a4cd382"><div class="ttname"><a href="structripple_1_1RPCCallImp.html#ab7421486f8b9b70783fab86e3a4cd382">ripple::RPCCallImp::onResponse</a></div><div class="ttdeci">static bool onResponse(std::function&lt; void(Json::Value const &amp;jvInput)&gt; callbackFuncP, const boost::system::error_code &amp;ecResult, int iStatus, std::string const &amp;strData, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01386">RPCCall.cpp:1386</a></div></div>
<div class="ttc" id="anamespaceripple_html_a425645d42dd2466ffc69e73fc6861b3d"><div class="ttname"><a href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d">ripple::rpcClient</a></div><div class="ttdeci">std::pair&lt; int, Json::Value &gt; rpcClient(std::vector&lt; std::string &gt; const &amp;args, Config const &amp;config, Logs &amp;logs, std::unordered_map&lt; std::string, std::string &gt; const &amp;headers)</div><div class="ttdoc">Internal invocation of RPC client.</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01530">RPCCall.cpp:1530</a></div></div>
<div class="ttc" id="anamespaceripple_html_a425645d42dd2466ffc69e73fc6861b3d"><div class="ttname"><a href="namespaceripple.html#a425645d42dd2466ffc69e73fc6861b3d">ripple::rpcClient</a></div><div class="ttdeci">std::pair&lt; int, Json::Value &gt; rpcClient(std::vector&lt; std::string &gt; const &amp;args, Config const &amp;config, Logs &amp;logs, std::unordered_map&lt; std::string, std::string &gt; const &amp;headers)</div><div class="ttdoc">Internal invocation of RPC client.</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01521">RPCCall.cpp:1521</a></div></div>
<div class="ttc" id="anamespaceripple_html_a1bf8df553d36589191c8057c136cce03ab23f52a56f27cc97abe221ea3c5cd56c"><div class="ttname"><a href="namespaceripple.html#a1bf8df553d36589191c8057c136cce03ab23f52a56f27cc97abe221ea3c5cd56c">ripple::TokenType::AccountPublic</a></div><div class="ttdeci">@ AccountPublic</div></div>
<div class="ttc" id="aclassJson_1_1Reader_html_a8ee4d40504e4f8b069745d762ab4d78c"><div class="ttname"><a href="classJson_1_1Reader.html#a8ee4d40504e4f8b069745d762ab4d78c">Json::Reader::parse</a></div><div class="ttdeci">bool parse(std::string const &amp;document, Value &amp;root)</div><div class="ttdoc">Read a Value from a JSON document.</div><div class="ttdef"><b>Definition:</b> <a href="json__reader_8cpp_source.html#l00074">json_reader.cpp:74</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a8c4c4528421d724a8a82db708b1a761b"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a8c4c4528421d724a8a82db708b1a761b">ripple::RPC::apiMaximumSupportedVersion</a></div><div class="ttdeci">constexpr unsigned int apiMaximumSupportedVersion</div><div class="ttdef"><b>Definition:</b> <a href="RPCHelpers_8h_source.html#l00244">RPCHelpers.h:244</a></div></div>
@@ -1970,10 +1960,10 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_af9776f187d3686a7fba4c2d2fbeebdf4"><div class="ttname"><a href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">ripple::to_string</a></div><div class="ttdeci">std::string to_string(Manifest const &amp;m)</div><div class="ttdoc">Format the specified manifest to a string for debugging purposes.</div><div class="ttdef"><b>Definition:</b> <a href="app_2misc_2impl_2Manifest_8cpp_source.html#l00041">app/misc/impl/Manifest.cpp:41</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a614d635bc248a592593feb322cd15ab8"><div class="ttname"><a href="classJson_1_1Value.html#a614d635bc248a592593feb322cd15ab8">Json::Value::asInt</a></div><div class="ttdeci">Int asInt() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00503">json_value.cpp:503</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_a62e5653a4b591563ac8e6e608b3200e9"><div class="ttname"><a href="classripple_1_1RPCParser.html#a62e5653a4b591563ac8e6e608b3200e9">ripple::RPCParser::isValidJson2</a></div><div class="ttdeci">bool isValidJson2(Json::Value const &amp;jv)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00613">RPCCall.cpp:613</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPCCall_html_a9817ac845ca5041cf35be3ef4750a9f2"><div class="ttname"><a href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2">ripple::RPCCall::fromNetwork</a></div><div class="ttdeci">void fromNetwork(boost::asio::io_service &amp;io_service, std::string const &amp;strIp, const std::uint16_t iPort, std::string const &amp;strUsername, std::string const &amp;strPassword, std::string const &amp;strPath, std::string const &amp;strMethod, Json::Value const &amp;jvParams, const bool bSSL, const bool quiet, Logs &amp;logs, std::function&lt; void(Json::Value const &amp;jvInput)&gt; callbackFuncP, std::unordered_map&lt; std::string, std::string &gt; headers)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01696">RPCCall.cpp:1696</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPCCall_html_a9817ac845ca5041cf35be3ef4750a9f2"><div class="ttname"><a href="namespaceripple_1_1RPCCall.html#a9817ac845ca5041cf35be3ef4750a9f2">ripple::RPCCall::fromNetwork</a></div><div class="ttdeci">void fromNetwork(boost::asio::io_service &amp;io_service, std::string const &amp;strIp, const std::uint16_t iPort, std::string const &amp;strUsername, std::string const &amp;strPassword, std::string const &amp;strPath, std::string const &amp;strMethod, Json::Value const &amp;jvParams, const bool bSSL, const bool quiet, Logs &amp;logs, std::function&lt; void(Json::Value const &amp;jvInput)&gt; callbackFuncP, std::unordered_map&lt; std::string, std::string &gt; headers)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l01687">RPCCall.cpp:1687</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html_a698d3fd0c0f0155995c87d2f48ac90d5"><div class="ttname"><a href="classripple_1_1base__uint.html#a698d3fd0c0f0155995c87d2f48ac90d5">ripple::base_uint::parseHex</a></div><div class="ttdeci">constexpr bool parseHex(std::string_view sv)</div><div class="ttdoc">Parse a hex string into a base_uint.</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00495">base_uint.h:495</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_a2d40420130c18e9c682f78bb20eafe88"><div class="ttname"><a href="classripple_1_1RPCParser.html#a2d40420130c18e9c682f78bb20eafe88">ripple::RPCParser::parseJson</a></div><div class="ttdeci">Json::Value parseJson(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00591">RPCCall.cpp:591</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a5b6ce0616f6995340f4dd846660c3749"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">ripple::RPC::make_param_error</a></div><div class="ttdeci">Json::Value make_param_error(std::string const &amp;message)</div><div class="ttdoc">Returns a new json object that indicates invalid parameters.</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00234">ErrorCodes.h:234</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a5b6ce0616f6995340f4dd846660c3749"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">ripple::RPC::make_param_error</a></div><div class="ttdeci">Json::Value make_param_error(std::string const &amp;message)</div><div class="ttdoc">Returns a new json object that indicates invalid parameters.</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00250">ErrorCodes.h:250</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_af8897ca9ac4d5d270ea09dc9cfb9fe02"><div class="ttname"><a href="classripple_1_1RPCParser.html#af8897ca9ac4d5d270ea09dc9cfb9fe02">ripple::RPCParser::parseSignFor</a></div><div class="ttdeci">Json::Value parseSignFor(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00562">RPCCall.cpp:562</a></div></div>
<div class="ttc" id="astructripple_1_1ServerHandlerImp_1_1Setup_1_1client__t_html_adae7271497ad30628f2c5d7ffbca9672"><div class="ttname"><a href="structripple_1_1ServerHandlerImp_1_1Setup_1_1client__t.html#adae7271497ad30628f2c5d7ffbca9672">ripple::ServerHandlerImp::Setup::client_t::password</a></div><div class="ttdeci">std::string password</div><div class="ttdef"><b>Definition:</b> <a href="ServerHandlerImp_8h_source.html#l00065">ServerHandlerImp.h:65</a></div></div>
<div class="ttc" id="aclassripple_1_1RPCParser_html_a175d63ba60d9b4889d99843922a4d62f"><div class="ttname"><a href="classripple_1_1RPCParser.html#a175d63ba60d9b4889d99843922a4d62f">ripple::RPCParser::parseNodeToShard</a></div><div class="ttdeci">Json::Value parseNodeToShard(Json::Value const &amp;jvParams)</div><div class="ttdef"><b>Definition:</b> <a href="RPCCall_8cpp_source.html#l00940">RPCCall.cpp:940</a></div></div>