This commit is contained in:
carlhua
2020-09-22 22:46:01 +00:00
parent 2682e5845e
commit b7f5072ca1
1456 changed files with 44778 additions and 38168 deletions

View File

@@ -156,77 +156,78 @@ $(function() {
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a3f2a31e585bbecb3af3740d34d7df15f">RPC::invalid_field_error</a>(jss::url);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (url.<a class="code" href="structripple_1_1parsedURL.html#abf3d08230b4c8b90ce9c6091c99552ff">scheme</a> != <span class="stringliteral">&quot;https&quot;</span>)</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#aa63398ec847d01de9d9af3598e3e2325">RPC::expected_field_error</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::url), <span class="stringliteral">&quot;HTTPS&quot;</span>);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// URL must point to an lz4 compressed tar archive &#39;.tar.lz4&#39;</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">auto</span> archiveName{url.<a class="code" href="structripple_1_1parsedURL.html#a4d823c3fa1765f734b684dddc8128b8f">path</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html">substr</a>(url.<a class="code" href="structripple_1_1parsedURL.html#a4d823c3fa1765f734b684dddc8128b8f">path</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find_last_of.html">find_last_of</a>(<span class="stringliteral">&quot;/\\&quot;</span>) + 1)};</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (archiveName.empty() || archiveName.size() &lt;= ext.size())</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::url) +</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="stringliteral">&quot;&#39;, invalid archive name&quot;</span>);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (!boost::iends_with(archiveName, ext))</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::url) +</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="stringliteral">&quot;&#39;, invalid archive extension&quot;</span>);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// Check for duplicate indexes</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (!archives</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; .emplace(</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; jv.asUInt(), <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(std::move(url), unparsedURL))</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; .second)</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::index) +</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="stringliteral">&quot;&#39;, duplicate shard ids.&quot;</span>);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html">RPC::ShardArchiveHandler</a>* handler = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; handler = context.<a class="code" href="structripple_1_1RPC_1_1Context.html#a7878751d68ed7fd43c385913c5e6ff04">app</a>.<a class="code" href="classripple_1_1Application.html#ae51f5437efa746b90d7d8b1ba16a153c">getShardArchiveHandler</a>();</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; </div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span> (!handler)</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <span class="stringliteral">&quot;Failed to create ShardArchiveHandler.&quot;</span>);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</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; e)</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(<span class="stringliteral">&quot;Failed to start download: &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="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; [index, url] : archives)</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (!handler-&gt;<a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html#a497de5fc940b275d7903ca8c5b6fe4d2">add</a>(index, std::move(url)))</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::index) + <span class="stringliteral">&quot;&#39;, shard id &quot;</span> +</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a>(index) + <span class="stringliteral">&quot; exists or being acquired&quot;</span>);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// Begin downloading.</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (!handler-&gt;<a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html#a1d5fcb70e734bc8c0df786b826bdcab0">start</a>())</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; handler-&gt;<a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html#a6677b860054025ac3f19ab5dd1b70be1">release</a>();</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#ab114d40490d1a6a0ab2fa6053167d461">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>);</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s{<span class="stringliteral">&quot;Downloading shard&quot;</span>};</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; preShards = shardStore-&gt;getPreShards();</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">if</span> (!<a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/all_any_none_of.html">std::all_of</a>(preShards.begin(), preShards.end(), ::isdigit))</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; s += <span class="stringliteral">&quot;s&quot;</span>;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a4e628867fe5111cabdf253dc2ed8f165">RPC::makeObjectValue</a>(s + <span class="stringliteral">&quot; &quot;</span> + preShards);</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (url.<a class="code" href="structripple_1_1parsedURL.html#abf3d08230b4c8b90ce9c6091c99552ff">scheme</a> != <span class="stringliteral">&quot;https&quot;</span> &amp;&amp; url.<a class="code" href="structripple_1_1parsedURL.html#abf3d08230b4c8b90ce9c6091c99552ff">scheme</a> != <span class="stringliteral">&quot;http&quot;</span>)</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#aa63398ec847d01de9d9af3598e3e2325">RPC::expected_field_error</a>(</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::url), <span class="stringliteral">&quot;HTTPS or HTTP&quot;</span>);</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; </div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// URL must point to an lz4 compressed tar archive &#39;.tar.lz4&#39;</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">auto</span> archiveName{url.<a class="code" href="structripple_1_1parsedURL.html#a4d823c3fa1765f734b684dddc8128b8f">path</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/substr.html">substr</a>(url.<a class="code" href="structripple_1_1parsedURL.html#a4d823c3fa1765f734b684dddc8128b8f">path</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find_last_of.html">find_last_of</a>(<span class="stringliteral">&quot;/\\&quot;</span>) + 1)};</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (archiveName.empty() || archiveName.size() &lt;= ext.size())</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::url) +</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="stringliteral">&quot;&#39;, invalid archive name&quot;</span>);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (!boost::iends_with(archiveName, ext))</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::url) +</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="stringliteral">&quot;&#39;, invalid archive extension&quot;</span>);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="comment">// Check for duplicate indexes</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (!archives</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; .emplace(</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; jv.asUInt(), <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a>(std::move(url), unparsedURL))</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; .second)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::index) +</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="stringliteral">&quot;&#39;, duplicate shard ids.&quot;</span>);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html">RPC::ShardArchiveHandler</a>* handler = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; handler = context.<a class="code" href="structripple_1_1RPC_1_1Context.html#a7878751d68ed7fd43c385913c5e6ff04">app</a>.<a class="code" href="classripple_1_1Application.html#ae51f5437efa746b90d7d8b1ba16a153c">getShardArchiveHandler</a>();</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (!handler)</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <span class="stringliteral">&quot;Failed to create ShardArchiveHandler.&quot;</span>);</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</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; e)</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(<span class="stringliteral">&quot;Failed to start download: &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="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; </div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; [index, url] : archives)</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (!handler-&gt;<a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html#a497de5fc940b275d7903ca8c5b6fe4d2">add</a>(index, std::move(url)))</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="stringliteral">&quot;Invalid field &#39;&quot;</span> + <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>(jss::index) + <span class="stringliteral">&quot;&#39;, shard id &quot;</span> +</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/to_string.html">std::to_string</a>(index) + <span class="stringliteral">&quot; exists or being acquired&quot;</span>);</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// Begin downloading.</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (!handler-&gt;<a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html#a1d5fcb70e734bc8c0df786b826bdcab0">start</a>())</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; handler-&gt;<a class="code" href="classripple_1_1RPC_1_1ShardArchiveHandler.html#a6677b860054025ac3f19ab5dd1b70be1">release</a>();</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#ab114d40490d1a6a0ab2fa6053167d461">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>);</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> s{<span class="stringliteral">&quot;Downloading shard&quot;</span>};</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; preShards = shardStore-&gt;getPreShards();</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span> (!<a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/all_any_none_of.html">std::all_of</a>(preShards.begin(), preShards.end(), ::isdigit))</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; s += <span class="stringliteral">&quot;s&quot;</span>;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a4e628867fe5111cabdf253dc2ed8f165">RPC::makeObjectValue</a>(s + <span class="stringliteral">&quot; &quot;</span> + preShards);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;}</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructripple_1_1RPC_1_1JsonContext_html"><div class="ttname"><a href="structripple_1_1RPC_1_1JsonContext.html">ripple::RPC::JsonContext</a></div><div class="ttdef"><b>Definition:</b> <a href="Context_8h_source.html#l00053">Context.h:53</a></div></div>
<div class="ttc" id="abasic_string_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a></div><div class="ttdoc">STL class.</div></div>