You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/05/18 09:29:52 UTC
[01/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Repository: mesos-site
Updated Branches:
refs/heads/asf-site f81da9d50 -> d7774475c
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2stat_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2stat_8hpp_source.html b/content/api/latest/c++/windows_2stat_8hpp_source.html
index c56371c..723a1fd 100644
--- a/content/api/latest/c++/windows_2stat_8hpp_source.html
+++ b/content/api/latest/c++/windows_2stat_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="windows_2stat_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//
</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div clas
s="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_STAT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_STAT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <type_traits></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00020"></a><span cla
ss="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="li
neno"> 26</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2internal_2windows_2attributes_8hpp.html">stout/internal/windows/attributes.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="reparsepoint_8hpp.html">stout/internal/windows/reparsepoint.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="symlink_8hpp.html">stout/internal/windows/symlink.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><s
pan class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">stat</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36
</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">isdir</a>(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span
>  <span class="comment">// A symlink itself is not a directory.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// If it's not a link, we ignore `follow`.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> && <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(path)) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line">
<a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">::internal::windows::get_file_attributes</a>(</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(path));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</d
iv><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// TODO(andschwa): Refactor `GetFileInformationByHandle` into its own function.</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a7946f1ee7757462c01876
054429a67b5"> 59</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">isdir</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>& fd)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  BY_HANDLE_FILE_INFORMATION info;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> BOOL result = ::GetFileInformationByHandle(fd, &info);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> <span class="key
word">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5">isfile</a>(</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> s
td::string& path,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// A symlink itself is a file, but not a regular file.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// On POSIX, this check is done with `S_IFREG`, which</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// returns false for symbolic links.</span></div><div class="line
"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// If it's not a link, we ignore `follow`.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> && <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(path)) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> <a
class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">::internal::windows::get_file_attributes</a>(</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  ::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(path));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div clas
s="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// NOTE: Windows files attributes do not define a flag for "regular"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// files. Instead, this call will only return successfully iff the</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// given file or directory exists. Checking against the directory</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// flag determines if the path is a file or directory.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> !(attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007
be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(<span class="keyword">const</span> std::string& path)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classTry.html">Try<::internal::windows::SymbolicLink></a> <a class="code" href="namespacefs.html#a68279f7514744bb2af74dfce8bb0bbc7">symlink</a> =</div><div class="line"><a name="l00101"></a>
<span class="lineno"> 101</span>  <a class="code" href="namespaceinternal_1_1windows.html#a39ca8fa0643b489f6bef951bef207c92">::internal::windows::query_symbolic_link_data</a>(path);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> symlink.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// Returns the size in Bytes of a given file system entry. When applied to a</span></div><div class="line"><a name="l00108"></a><span class="linen
o"> 108</span> <span class="comment">// symbolic link with `follow` set to `DO_NOT_FOLLOW_SYMLINK`, this will return</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// zero because that's what Windows says.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>(</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">const</span> std::string& path,</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82
665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<SharedHandle></a> handle = (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  ? ::<a class="code" href="namespaceinternal_1_1windows.html#a5b261c85683d489b859236063e979e98">internal::windows::get_handle_follow</a>(path)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  : <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">::internal::windows::get_handle_no_follow</a>(path);</div><div
class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Error obtaining handle to file: "</span> + handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  LARGE_INTEGER file_size;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</sp
an>  <span class="keywordflow">if</span> (::GetFileSizeEx(handle-><a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), &file_size) == 0) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(file_size.QuadPart);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</
span> </div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#af7fab12f2f4bf8ec51d5791202d41abc"> 131</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>& fd)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  LARGE_INTEGER file_size;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span> (::GetFileSizeEx(fd, &file_size) == 0) {</div><div class="line"><a name="l00136"></a><span class=
"lineno"> 136</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(file_size.QuadPart);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<long></a> <a class="code" href="namespaceos_1_1stat.html#a7305d671adaae193b
8c158bf058180ee">mtime</a>(</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">const</span> std::string& path,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span> (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a> && <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b93
8da76e404648103077480">islink</a>(path)) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="stringliteral">"Requested mtime for '"</span> + path +</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="stringliteral">"', but symbolic links don't have an mtime on Windows"</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> handle =</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</s
pan>  (follow == <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  ? ::<a class="code" href="namespaceinternal_1_1windows.html#a5b261c85683d489b859236063e979e98">internal::windows::get_handle_follow</a>(path)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  : <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">::internal::windows::get_handle_no_follow</a>(path);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span> (handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <a class="co
de" href="classError.html">Error</a>(handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  FILETIME filetime;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// The last argument is file write time, AKA modification time.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">const</span> BOOL result =</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  ::GetFileTime(handle-><a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), <span class="keyword">nullptr</span>, <span class="keyword">nullptr</sp
an>, &filetime);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// Convert to 64-bit integer using Windows magic.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ULARGE_INTEGER largetime;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  largetime.LowPart = filetime.dwLowDateTime;</div><div class="line"><a name="l00172"></a><span class="lineno">
172</span>  largetime.HighPart = filetime.dwHighDateTime;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// Now the `QuadPart` field is the 64-bit representation due to the</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// layout of the `ULARGE_INTEGER` struct.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  static_assert(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">sizeof</span>(largetime.QuadPart) == <span class="keyword">sizeof</span>(__int64),</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="stringliteral">"Expected `QuadPart` to be of type `__int64`"</span>);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">const</span>
__int64 windowstime = largetime.QuadPart;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// A file time is a 64-bit value that represents the number of</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// 100-nanosecond intervals that have elapsed since 1601-01-01</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// 00:00:00 +0000. However, users of this function expect UNIX time,</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// which is seconds elapsed since the Epoch, 1970-01-01 00:00:00</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// +0000.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">//</spa
n></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// So first we convert 100-nanosecond intervals into seconds by</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// doing `(x * 100) / (1,000^3)`, or `x / 10,000,000`, and then</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// substracting the number of seconds between 1601-01-01 and</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// 1970-01-01, or `11,644,473,600`.</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">const</span> __int64 unixtime = (windowstime / 10000000) - 11644473600;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// We choose to make this c
onversion explicit because we expect the</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// truncation to not cause information loss.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">long</span><span class="keyword">></span>(unixtime);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">// NOTE: The following are deleted because implementing them would use</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment
">// the CRT API `_stat`, which we want to avoid, and they're not</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// currently used on Windows.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mode_t></a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>(</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">const</span> std::string& path,</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div clas
s="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<dev_t></a> <a class="code" href="namespaceos_1_1stat.html#a083c9ff4aefeba1a75a27e6a6d6e2a71">dev</a>(</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keyword">const</span> std::string& path,</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>
0;<span class="keyword">inline</span> <a class="code" href="classTry.html">Try<ino_t></a> <a class="code" href="namespaceos_1_1stat.html#ac48383be68af20ef17fe5b87177636b8">inode</a>(</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">const</span> std::string& path,</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> } <span class="comment">// namespace stat {</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00215"></a><spa
n class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_STAT_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:215</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a178d1c99fc88dae58f9a5fc4fc3167d5"><div class="ttname"><a href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5">os::stat::isfile</a></div><div class="ttdeci">bool isfile(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:106</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classSharedHandle_html_a800385e17e17cb826147968e748fd8fa"><div class="ttname"><a href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">SharedHandle::get_handle</a></div><div class="ttdeci">HANDLE get_handle() const </div><div class="ttdef"><b>Definition:</b> windows.hpp:90</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2su_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2su_8hpp_source.html b/content/api/latest/c++/windows_2su_8hpp_source.html
index 20e052d..d1545e9 100644
--- a/content/api/latest/c++/windows_2su_8hpp_source.html
+++ b/content/api/latest/c++/windows_2su_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="windows_2su_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span
class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distr
ibuted under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_SU_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_SU_HPP__</span></div><div cl
ass="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/
result.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Include for `GetUserNameEx`. `SECURITY_WIN32` or `SECURITY_KERNEL` must be</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// defined to include `SecExt.h`, which defines `GetUserNameEx` (the choice</span></div><
div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// depends on whether you want the functions defined to be usermode or kernel</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// operations). We include `security.h` instead of `SecExt.h` because comments</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// in this header indicate that it should only be included from `security.h`.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Finally, we `#undef` to avoid accidentally interfering with Windows headers</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// that might be sensitive to `SECURITY_WIN32`.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>
0;<span class="preprocessor">#if defined(SECURITY_WIN32) || defined(SECURITY_KERNEL)</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <security.h></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="windows_2su_8hpp.html#a1859fb1234511b94993fe8566eba866b"> 40</a></span> <span class="preprocessor">#define SECURITY_WIN32</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <security.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#undef SECURITY_WIN32</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#endif // SECURITY_W
IN32 || SECURITY_KERNEL</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// NOTE: We delete these functions because they are not meaningful on Windows.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// `su` and `user` are the most important of these functions. The POSIX code</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// uses them prodigiously, but in Windows we have been abl
e to divest ourselves</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// of all uses.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// `su` is important to the launcher API; if the `user` flag (not to be</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// confused with the `user` function, which we delete below) is present, we</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// will `su` to that user before launching the command. On Windows we avoid</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// this problem by simply conditionally compiling out the `u
ser` flag</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// altogether, which means that we never have to call `su`.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">//</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// The `user` function itself is already mostly conditionally compiled out of</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// every platform except linux. So in this case it is simply safe to return an</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// error on Windows.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div c
lass="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<uid_t></a> <a class="code" href="namespaceos.html#ab20654c3bd05280d32833e654c61b1e4">getuid</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a> = <a class="code" href="structNone.html">None</a>()) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<gid_t></a> <a class="code" href="namespaceos.html#a3d46f808886a786c2daab6eb1d81b206">getgid</a>(<span class="keywor
d">const</span> <a class="code" href="classOption.html">Option<std::string></a>& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a> = <a class="code" href="structNone.html">None</a>()) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Returns the SAM account name for the current user. This username is</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// unprocessed, meaning it contains punctuation, possibly including '\'.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// NOTE: The `uid` parameter is unsupported on Windows, and will result in an</spa
n></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// error.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>(<a class="code" href="classOption.html">Option<uid_t></a> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>.isSome()) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> 
<span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">"os::user: Retrieving user information via uid "</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="stringliteral">"is not supported on Windows"</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  EXTENDED_NAME_FORMAT username_format = NameSamCompatible;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  ULONG buffer_size = 0;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (::GetUs
erNameExW(username_format, <span class="keyword">nullptr</span>, &buffer_size) == FALSE) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (::GetLastError() != ERROR_MORE_DATA) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"os::user: Failed to get buffer size for username"</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::vector<wchar_t> user_name;</div><div class="line"><a name="l00091"></a><span class="lineno">
91</span>  user_name.reserve(buffer_size);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (::GetUserNameExW(username_format, user_name.data(), &buffer_size)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  == FALSE) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"os::user: Failed to get username from OS"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">str
ingify</a>(std::wstring(user_name.data()));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#acae67fc8bd809c609bf1ffb281d921c6">su</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00104"></a><span
class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_SU_HPP__</span></div><div class="ttc" id="namespaceos_1_1stat_html_a96066cfc01f1f62fc25b56f6915800eb"><div class="ttname"><a href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">os::stat::uid</a></div><div class="ttdeci">Try< uid_t > uid(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:213</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_a698aa27e5ea6b1dc1c190b978c2f7960"><div class="ttname"><a href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">os::user</a></div><div class="ttdeci">Result< std::string > user(Option< uid_t > uid=None())</div><div class="ttdef"><b>Definition:</b> su.hpp:277</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/write_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/write_8hpp_source.html b/content/api/latest/c++/write_8hpp_source.html
index b802ab9..82c4dc4 100644
--- a/content/api/latest/c++/write_8hpp_source.html
+++ b/content/api/latest/c++/write_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="write_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WRITE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WRITE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <cstring></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line">
<a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="open_8hpp.html">stout/os/open.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="stout_2includ
e_2stout_2os_2socket_8hpp.html">stout/os/socket.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="windows_2write_8hpp.html">stout/os/windows/write.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="posix_2write_8hpp.html">stout/os/posix/write.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a
name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span>signal_safe {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceos_1_1signal__safe.html#ad42f0ba6d36e7d9611f80820add8424a"> 38</a></span> <span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos_1_1signal__sa
fe.html#ad42f0ba6d36e7d9611f80820add8424a">write_impl</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">size_t</span> count)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">size_t</span> offset = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">while</span> (offset < count) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length = <a class="code" href="namespaceos.html#a73da9d49515d
fff761c4887c3d6032c0">os::write</a>(fd, buffer + offset, count - offset);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (length < 0) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// NOTE: There is no actual difference between `WSAGetLastError` and</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// `GetLastError`, the former is an alias for the latter. So we can</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// simply use the former here for both `HANDLE` and `SOCKET` types of</span></
div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// `int_fd`. See MESOS-8764.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = ::GetLastError();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">int</span> error = errno;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span
class="comment">// TODO(benh): Handle a non-blocking fd? (EAGAIN, EWOULDBLOCK).</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacenet.html#a190d273d305decda6696ed04b3adbd59">net::is_restartable_error</a>(error)) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  offset += length;</div><div class="line"><a name="l
00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> offset;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b"> 70</a></span> <span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(<a class="code" href="int__fd_8hpp.html#
aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> <span class="keywordtype">char</span>* message)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// `strlen` declared as async-signal safe in POSIX.1-2016 standard.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos_1_1signal__safe.html#ad42f0ba6d36e7d9611f80820add8424a">write_impl</a>(fd, message, std::strlen(message));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="lin
e" href="namespaceos_1_1signal__safe.html#a1fe471bfb9a8e827779d24a58ba155d3"> 77</a></span> <span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> std::string& message)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos_1_1signal__safe.html#ad42f0ba6d36e7d9611f80820add8424a">write_impl</a>(fd, message.data(), message.length());</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="line"><a name="l00081"></a><span cl
ass="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespaceos_1_1signal__safe.html#a67bf0cd3aa924b5584a8744f15430835"> 84</a></span> <span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> T& message, Args... args)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>
 {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> result = <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(fd, message);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (result < 0) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">w
rite</a>(fd, args...);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> } <span class="comment">// namespace signal_safe {</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// Write out the string to the file at the current fd position.</span></div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="namespaceos.html#a1b67d073837cf74e5cdfa785d5c95fac"> 98</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e1
0ddf35fa4569cb1a7d1e3532b">write</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keyword">const</span> std::string& message)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> result = <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">signal_safe::write</a>(fd, message);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (result < 0) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordf
low">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line">
<a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// A wrapper function that wraps the above write() with</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// open and closing the file.</span></div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespaceos.html#a1261e5423671d777b7276223b7427045"> 115</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>, <span class="keyword">const</span> std::string& message)</div><div class="lin
e"><a name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classTry.html">Try<int_fd></a> fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  path,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  O_WRONLY | O_CREAT | O_TRUNC | <a class="code" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067">O_CLOEXEC</a>,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a> | <a class="code" href="3rdparty_2stout_2include_2sto
ut_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a90d7514882640a8cd7b8da14138103b7">S_IROTH</a>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span> (fd.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(fd.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</
span>  <a class="code" href="classTry.html">Try<Nothing></a> result = <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(fd.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), message);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// We ignore the return value of close(). This is because users</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// calling this function are interested in the return value of</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// write(). Also an unsuccessful close() doesn't affect the write.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="c
ode" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// NOTE: This overload is necessary to disambiguate between arguments</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// of type `HANDLE` (`typedef void*`) and `char*` on Windows.</span></div><di
v class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="namespaceos.html#aa0e3acff8992055da620cae8b455d93d"> 139</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacepath.html">path</a>, <span class="keyword">const</span> std::string& message)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos_1_1signal__safe.html#a35b77e10ddf35fa4569cb1a7d1e3532b">write</a>(std::string(path), message);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> }</div><div class="line"><a name="l0014
3"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#endif // __STOUT_OS_WRITE_HPP__</span></div><div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a894c4d58faeee7675b9e7e8244de1386"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a></div><div class="ttdeci">SSIZE_T ssize_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:186</div></div>
<div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a55fad1c3746e1b8a6a00c10998e91d91"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a></div><div class="ttdeci">const mode_t S_IRGRP</div><div class="ttdef"><b>Definition:</b> windows.hpp:313</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:26</div></div>
@@ -63,7 +63,7 @@
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_aead39710af2622ee9b0d412f62e90aa5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a></div><div class="ttdeci">const mode_t S_IWUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:306</div></div>
<div class="ttc" id="namespaceos_html_aaf5d5468adc1b85cf9bb7126e70807ca"><div class="ttname"><a href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a></div><div class="ttdeci">Try< int_fd > open(const std::string &path, int oflag, mode_t mode=0)</div><div class="ttdef"><b>Definition:</b> open.hpp:35</div></div>
<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:106</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a66cff14a0638cde9f422c7a4b0938e61"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a></div><div class="ttdeci">const mode_t S_IRUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:305</div></div>
<div class="ttc" id="stout_2include_2stout_2os_2socket_8hpp_html"><div class="ttname"><a href="stout_2include_2stout_2os_2socket_8hpp.html">socket.hpp</a></div></div>
[20/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/queueing_2internal_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/queueing_2internal_8hpp_source.html b/content/api/latest/c++/queueing_2internal_8hpp_source.html
index 76f539b..fbfccfe 100644
--- a/content/api/latest/c++/queueing_2internal_8hpp_source.html
+++ b/content/api/latest/c++/queueing_2internal_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="queueing_2internal_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></
a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">/
/ distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __LINUX_ROUTING_QUEUEING_INTERNAL_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __LINUX_ROUTING_QUEUEING_INT
ERNAL_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <netlink/cache.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <netlink/errno.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <netlink/object.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <netlink/socket.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <netlink/route/link.h></span></div><div class="line"><a name="l00026"></a><span cla
ss="lineno"> 26</span> <span class="preprocessor">#include <netlink/route/qdisc.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <netlink/route/tc.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="pr
eprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></
a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">linux/routing/handle.hpp</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="internal_8hpp.html">linux/routing/internal.hpp</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="link_2internal_8hpp.html">linux/routing/link/internal.hpp</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include "<a class="code" href="discipline_8hpp.html">linux/routing/queueing/discipline.hpp</a>"</span></div><d
iv class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include "<a class="code" href="src_2linux_2routing_2queueing_2statistics_8hpp.html">linux/routing/queueing/statistics.hpp</a>"</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">namespace </span><a class="code" href="namespacerouting.html">routing</a> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacerouting.html#a45c8542f817736d39bfe9c782ca54c74"> 50</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespac
erouting.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(<span class="keyword">struct</span> rtnl_qdisc* qdisc)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  rtnl_qdisc_put(qdisc);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">namespace </span>queueing {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html"> 56</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00059"></a><s
pan class="lineno"> 59</span> <span class="comment">// Helpers for {en}decoding.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"></span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Forward declaration. Each type of queueing discipline needs to</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// implement this function to encode its type specific configurations</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// into the libnl queueing discipline (rtnl_qdisc).</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Config></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <a class
="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#ad9cf687c1486b960e8dd9b96e1f84644">encode</a>(</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_qdisc></a>& qdisc,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">const</span> Config& config);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// Forward declaration. Each type of queueing discipline needs to</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// implement
this function to decode its type specific configurations</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// from the libnl queueing discipline (rtnl_qdisc). Returns None if</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// the libnl queueing discipline does not match the specified queueing</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// discipline type.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Config></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <a class="code" href="classResult.html">Result<Config></a> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#a9692817d57aa1e0599afef0fd7e17ee7">decode</a>(<s
pan class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_qdisc></a>& qdisc);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Encodes a queueing discipline (in our representation) to a libnl</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// queueing discipline (rtnl_qdisc). We use template here so that it</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// works for any type of queueing discipline.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Config></
div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html#afb17c5030aa53c7371526308d0a8b71e"> 84</a></span> <a class="code" href="classTry.html">Try<Netlink<struct rtnl_qdisc></a>> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#afb17c5030aa53c7371526308d0a8b71e">encodeDiscipline</a>(</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>& link,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1queueing_1_1Discipline.html">Discipline<Config></a>& discipline)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class=
"lineno"> 88</span>  <span class="keyword">struct </span>rtnl_qdisc* q = rtnl_qdisc_alloc();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (q == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to allocate a libnl qdisc"</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_qdisc></a> qdisc(q);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="
l00095"></a><span class="lineno"> 95</span>  rtnl_tc_set_link(TC_CAST(qdisc.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), link.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  rtnl_tc_set_parent(TC_CAST(qdisc.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), discipline.<a class="code" href="structrouting_1_1queueing_1_1Discipline.html#a51acd08c88f4883eb14c2c86d09e2fdc">parent</a>.get());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span> (discipline.<a class="code" href="structrouting_1_1queueing_1_1Discipline.html#aedc58e6c754299543ef88d2a0d1241a2">handle</a>.isSome()) {</div><div class="line"
><a name="l00099"></a><span class="lineno"> 99</span>  rtnl_tc_set_handle(TC_CAST(qdisc.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), discipline.<a class="code" href="structrouting_1_1queueing_1_1Discipline.html#aedc58e6c754299543ef88d2a0d1241a2">handle</a>->get());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_tc_set_kind(TC_CAST(qdisc.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), discipline.<a class="code" href="structrouting_1_1queueing_1_1Discipline.html#a56a06799a1259a219eefface9834a3a3">kind<
/a>.c_str());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="stringliteral">"Failed to set the kind of the queueing discipline: "</span> +</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Perform queue discipline specific encoding.</span></div><div class="line
"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classTry.html">Try<Nothing></a> encoding = <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#ad9cf687c1486b960e8dd9b96e1f84644">encode</a>(qdisc, discipline.<a class="code" href="structrouting_1_1queueing_1_1Discipline.html#a5c91c093e21425cce3552ddfbaf8842c">config</a>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (encoding.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="stringliteral">"Failed to encode the queueing discipline: "</span> +</div><div class="line"><a name="l001
14"></a><span class="lineno"> 114</span>  encoding.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> qdisc;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// Helpers for internal APIs.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"></span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// Returns all t
he libnl queue discipline (rtnl_qdisc) on the link.</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html#ad552fd699ab2997095176f451ec82cb6"> 125</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::vector<Netlink<struct rtnl_qdisc></a>>> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#ad552fd699ab2997095176f451ec82cb6">getQdiscs</a>(</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>& link)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" h
ref="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a> = <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing::socket</a>();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span> (socket.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(socket.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// Dump all the queueing discipline from kernel.</span></
div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">struct </span>nl_cache* c = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_qdisc_alloc_cache(socket-><a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), &c);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="stringliteral">"Failed to get q
ueueing discipline info from kernel: "</span> +</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct nl_cache></a> cache(c);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  std::vector<Netlink<struct rtnl_qdisc>> results;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (<span class="keyword">struct<
/span> nl_object* o = nl_cache_get_first(cache.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  o != <span class="keyword">nullptr</span>; o = nl_cache_get_next(o)) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span> (rtnl_tc_get_ifindex(TC_CAST(o)) == rtnl_link_get_ifindex(link.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// NOTE: We increment the reference counter here because 'cache'</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// will be freed when this function finishes and we want this</span></div><div class="line"><a name="l0
0151"></a><span class="lineno"> 151</span>  <span class="comment">// object's life to be longer than this function.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  nl_object_get(o);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  results.push_back(<a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_qdisc></a>((<span class="keyword">struct</span> rtnl_qdisc*) o));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> results;</div><div class="line">
<a name="l00159"></a><span class="lineno"> 159</span> }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// Returns the libnl queueing discipline (rtnl_qdisc) attached to the</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="comment">// given parent that matches the specified queueing discipline kind on</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// the link. Return None if no match has been found.</span></div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html#a9fca028c36468bfe3679281194691ef6"> 165</a></span> <span class="keyword">inline</span> <a class="c
ode" href="classResult.html">Result<Netlink<struct rtnl_qdisc></a>> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#a9fca028c36468bfe3679281194691ef6">getQdisc</a>(</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>& link,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Handle.html">Handle</a>& parent,</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00170"></a><span class="lin
eno"> 170</span>  <a class="code" href="classTry.html">Try<std::vector<Netlink<struct rtnl_qdisc></a>>> qdiscs = <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#ad552fd699ab2997095176f451ec82cb6">getQdiscs</a>(link);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (qdiscs.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(qdiscs.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#
160; <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_qdisc></a>& qdisc, qdiscs.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span> (rtnl_tc_get_parent(TC_CAST(qdisc.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) == parent.<a class="code" href="classrouting_1_1Handle.html#aaaf5d48afa385557421c29db03c27caf">get</a>() &&</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  rtnl_tc_get_kind(TC_CAST(qdisc.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) == <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>) {</div><div class="line"><a na
me="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> qdisc;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// Internal queueing APIs.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment"></span></div><div class="line"><a name="
l00189"></a><span class="lineno"> 189</span> <span class="comment">// Returns true if there exists a queueing discipline attached to the</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// given parent that matches the specified queueing discipline kind on</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="comment">// the link.</span></div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html#ae4c92fe8ba27934ad08e2d1307f0dc8a"> 192</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<bool></a> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#ae4c92fe8ba27934ad08e2d1307f0dc8a">exists</a>(</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> std::string& _l
ink,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Handle.html">Handle</a>& parent,</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link = <a class="code" href="namespacerouting_1_1link_1_1internal.html#a01998838b3ff4f3123f42927f7f54738">link::internal::get</a>(_link);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult
.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#
160; <a class="code" href="classResult.html">Result<Netlink<struct rtnl_qdisc></a>> qdisc = <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#a9fca028c36468bfe3679281194691ef6">getQdisc</a>(link.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), parent, <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (qdisc.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(qdisc.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</di
v><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> qdisc.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// Creates a new queueing discipline on the link. Returns false if a</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// queueing discipline attached to the same parent with the same</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <sp
an class="comment">// configuration already exists on the link. We use template here so</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// that it works for any type of queueing discipline.</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Config></div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html#ad758dd14190e35694010d8975d39e24c"> 218</a></span> <a class="code" href="classTry.html">Try<bool></a> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#ad758dd14190e35694010d8975d39e24c">create</a>(</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">const</span> std::string& _link,</div><div class="line"><a name="l00220"></a><span clas
s="lineno"> 220</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1queueing_1_1Discipline.html">Discipline<Config></a>& discipline)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link = <a class="code" href="namespacerouting_1_1link_1_1internal.html#a01998838b3ff4f3123f42927f7f54738">link::internal::get</a>(_link);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" hr
ef="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Link '"</span> + _link + <span class="stringliteral">"' is not found"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classTry.html">Try<Netlink<struct rtnl_qdisc></a>> qdisc =</div><div
class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#afb17c5030aa53c7371526308d0a8b71e">encodeDiscipline</a>(link.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), discipline);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (qdisc.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to encode the queueing discipline: "</span> + qdisc.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l
00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a> = <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing::socket</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (socket.isError()) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(socket.error());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span
> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// The flag NLM_F_EXCL tells libnl that if the qdisc already exists,</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// this function should return error.</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_qdisc_add(</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  socket->get(),</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  qdisc-><a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  NLM_F_CREATE |
NLM_F_EXCL);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span> (error == -NLE_EXIST) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="stringliteral">"Failed to add a queueing discipline to the link: "</spa
n> +</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="comment">// Removes the specified discipline attached to the given parent that</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="comme
nt">// matches the specified queueing discipline kind on the link. Return</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="comment">// false if such a queueing discipline is not found.</span></div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html#a60c7d5300f6e8980ebb1fff3c2ebcb2d"> 264</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<bool></a> <span class="keyword">remove</span>(</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> std::string& _link,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Handle.html">Handle</a>& parent,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <
span class="keyword">const</span> std::string& <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link = <a class="code" href="namespacerouting_1_1link_1_1internal.html#a01998838b3ff4f3123f42927f7f54738">link::internal::get</a>(_link);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" href="classResult.html#a521adf96f5c
27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_qdisc></a>> qdisc = <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#a9fca028c36468bfe3679281194691ef6">getQdisc</a>(link.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64
ada4d412">get</a>(), parent, <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span> (qdisc.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(qdisc.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qdisc.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</s
pan> <span class="keyword">false</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a> = <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing::socket</a>();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (socket.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(socket.<a class="code" href="cl
assTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_qdisc_delete(socket-><a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), qdisc.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>().get());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// TODO(jieyu): Interpret the error code and return false if it<
/span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// indicates that the queueing discipline is not found.</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(std::string(nl_geterror(error)));</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><
a name="l00299"></a><span class="lineno"> 299</span> <span class="comment">// Returns the set of common Traffic Control statistics for the</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="comment">// queueing discipline on the link, None() if the link or qdisc does</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment">// not exist or an error if we cannot cannot determine the result.</span></div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="namespacerouting_1_1queueing_1_1internal.html#a91cfc1e150fcd66e41ce327b7e1908de"> 302</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<hashmap<std::string, uint64_t></a>> <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#a91cfc1e150fcd66e41ce327b7e1908de">statistics</a>(</div><div class="line"><a name="l00303"></a><
span class="lineno"> 303</span>  <span class="keyword">const</span> std::string& _link,</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Handle.html">Handle</a>& parent,</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link = <a class="code" href="namespacerouting_1_1link_1_1internal.html#a01998838b3ff4f3123f42927f7f54738">link::internal::get</a>(_link);</div><div class="line"><a name="l00308"></a><span class="lineno"
> 308</span>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span cl
ass="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_qdisc></a>> qdisc = <a class="code" href="namespacerouting_1_1queueing_1_1internal.html#a9fca028c36468bfe3679281194691ef6">getQdisc</a>(link.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), parent, <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span> (qdisc.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(qdisc.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae
8aaee">error</a>());</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (qdisc.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="classhashmap.html">hashmap<std::string, uint64_t></a> results;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordtype">char</span> <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a865
1c0a457ce46">name</a>[32];</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// NOTE: We use '<=' here because RTNL_TC_STATS_MAX is set to be the</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// value of the last enum entry.</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i <= static_cast<size_t>(RTNL_TC_STATS_MAX); i++) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (rtnl_tc_stat2str(static_cast<rtnl_tc_stat>(i), name, <span class="keyword">sizeof</span>(name))) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> 
results[<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>] = rtnl_tc_get_stat(</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  TC_CAST(qdisc-><a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()),</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  static_cast<rtnl_tc_stat>(i));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> results;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno">
336</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> } <span class="comment">// namespace queueing {</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> } <span class="comment">// namespace routing {</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor">#endif // __LINUX_ROUTING_QUEUEING_INTERNAL_HPP__</span></div><div class="ttc" id="structrouting_1_1queueing_1_1Discipline_html_a56a06799a1259a219eefface9834a3a3"><div class="ttname"><a href="structrouting_1_1queueing_1_1Discipline.html#a56a06799a1259a219eefface9834a3a3">routing::queueing::Discipline::kind</a></div><div class="ttdeci">std::string kind</div><div class="ttdef"><b>Definition:</b> discipline.hpp:42</div></div>
<div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespacerouting_1_1queueing_1_1internal_html_a91cfc1e150fcd66e41ce327b7e1908de"><div class="ttname"><a href="namespacerouting_1_1queueing_1_1internal.html#a91cfc1e150fcd66e41ce327b7e1908de">routing::queueing::internal::statistics</a></div><div class="ttdeci">Result< hashmap< std::string, uint64_t > > statistics(const std::string &_link, const Handle &parent, const std::string &kind)</div><div class="ttdef"><b>Definition:</b> internal.hpp:302</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
[42/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/base64_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/base64_8hpp_source.html b/content/api/latest/c++/base64_8hpp_source.html
index 97927c8..ea2be3a 100644
--- a/content/api/latest/c++/base64_8hpp_source.html
+++ b/content/api/latest/c++/base64_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">base64.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="base64_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_BASE64_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_BASE64_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <cctype></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class
="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespacebase64.html"> 24</a></span> <span class="keyword">namespace </span><a class="code" href="namespacebase64.html">base64</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html"> 26</a></span> <sp
an class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// This slightly modified base64 implementation from</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// cplusplus.com answer by modoran can be found at:</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// http://www.cplusplus.com/forum/beginner/51572/</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc"> 32</a></span> constexpr <span class="keywordtype">char</span> <a class="code"
href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc">STANDARD_CHARS</a>[] =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="stringliteral">"abcdefghijklmnopqrstuvwxyz"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="stringliteral">"0123456789+/"</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335"> 37</a></span> constexpr <span class="keywordtype">char</span> <a class="code" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335">URL_SAFE_CHARS</a>[] =</div><div clas
s="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="stringliteral">"abcdefghijklmnopqrstuvwxyz"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="stringliteral">"0123456789-_"</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818"> 43</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">encode</a>(</div><div class="line"><a name="l00044"></a><span cl
ass="lineno"> 44</span>  <span class="keyword">const</span> std::string& s,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> std::string& chars,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">bool</span> padding)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::string result;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">int</span> j = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array3[3];</di
v><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array4[4];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* bytesToEncode = s.c_str();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">size_t</span> length = s.size();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">while</span> (length--) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  array3[i++] = *(bytesToEncode++);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (i == 3) {</div><div class="l
ine"><a name="l00059"></a><span class="lineno"> 59</span>  array4[0] = (array3[0] & 0xfc) >> 2;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  array4[1] = ((array3[0] & 0x03) << 4) + ((array3[1] & 0xf0) >> 4);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  array4[2] = ((array3[1] & 0x0f) << 2) + ((array3[2] & 0xc0) >> 6);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  array4[3] = array3[2] & 0x3f;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span> (i = 0; i < 4; i++) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  result += chars[array4[i]];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a
><span class="lineno"> 66</span>  i = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (i != 0) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span> (j = i; j < 3; j++) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  array3[j] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  array4[0] = (array3[0] & 0xfc) >> 2;</div><div class="line"><a name="
l00075"></a><span class="lineno"> 75</span>  array4[1] = ((array3[0] & 0x03) << 4) + ((array3[1] & 0xf0) >> 4);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  array4[2] = ((array3[1] & 0x0f) << 2) + ((array3[2] & 0xc0) >> 6);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  array4[3] = array3[2] & 0x3f;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">for</span> (j = 0; j < i + 1; j++) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  result += chars[array4[j]];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (padding) {</div><div class="line"><a name="l00082"></a><span class="lineno">
82</span>  <span class="keywordflow">while</span> (i++ < 3) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  result += <span class="charliteral">'='</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l000
92"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69"> 92</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">decode</a>(<span class="keyword">const</span> std::string& s, <span class="keyword">const</span> std::string& chars)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">auto</span> isBase64 = [&chars](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) -> <span class="keywordtype">bool</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> (isalnum(c) || (c == chars[62]) || (c == chars[63]));</di
v><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  };</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">size_t</span> i = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array3[3];</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array4[4];</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::string result;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">foreach</span> (<span class="keywordtype">un
signed</span> <span class="keywordtype">char</span> c, s) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'='</span>) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// TODO(bmahler): Note that this does not validate that</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// there are the correct number of '=' characters!</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">break</span>; <span class="comment">// Reached the padding.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span clas
s="lineno"> 110</span>  <span class="comment">// The base RFC (https://tools.ietf.org/html/rfc4648#section-3.3) explicitly</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// asks to reject non-alphabet characters including newlines and</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// whitespaces. However, other specifications like MIME simply ignore</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// characters outside the base alphabet ("be liberal in what you accept").</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Further, most implementation ignore whiltespace characters when</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment
">// processing encoded data. This allows tools to delimit encoded with</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// newlines or other whitespace characters for better readability, etc.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (isspace(c)) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span> (!isBase64(c)) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" hr
ef="classError.html">Error</a>(<span class="stringliteral">"Invalid character '"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(c) + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  array4[i++] = c;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (i == 4) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span> (i = 0; i < 4; i++) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  array4[i
] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(chars.find(array4[i]));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  array3[0] = (array4[0] << 2) + ((array4[1] & 0x30) >> 4);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  array3[1] = ((array4[1] & 0xf) << 4) + ((array4[2] & 0x3c) >> 2);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  array3[2] = ((array4[2] & 0x3) << 6) + array4[3];</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span> (i = 0; i < 3; i++) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> 
result += array3[i];</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  i = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (i != 0) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">size_t</span> j;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">for</span> (j = i; j < 4; j++) {</div><div class="line"><a
name="l00145"></a><span class="lineno"> 145</span>  array4[j] = 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">for</span> (j = 0; j < 4; j++) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  array4[j] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(chars.find(array4[j]));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  array3[0] = (array4[0] << 2) + ((array4[1] & 0x30) >> 4);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  array3[1] = ((array4[1] & 0xf) << 4) + ((array4[2] &
amp; 0x3c) >> 2);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  array3[2] = ((array4[2] & 0x3) << 6) + array4[3];</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">for</span> (j = 0; (j < i - 1); j++) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  result += array3[j];</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> 
</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="namespacebase64.html#a47c61bb5df3dae8cd38f44b6b69e5b4d"> 170</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">encode</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">internal::encode</a>(
s, <a class="code" href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc">internal::STANDARD_CHARS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="namespacebase64.html#ab3ba01437a30ea8938faaa92e9b72948"> 183</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">decode</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#
160; <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">internal::decode</a>(s, <a class="code" href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc">internal::STANDARD_CHARS</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="namespacebase64.html#a684ce7ecc99e8ba6906c3a063b9ef71c"> 196</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespacebase64.html#a684ce7ecc99e8ba6906c3a063b9ef71c">encode_url_safe</a>(<span class="keyword">const</span> std::string& s, <span class="keywordtype">bool</span> padding = <span class="keyword">true</span>)</div><div clas
s="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">internal::encode</a>(s, <a class="code" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335">internal::URL_SAFE_CHARS</a>, padding);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespacebase64.html#aae9b40e06fb97752bef369b2a0190eaf"> 209</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacebase64.h
tml#aae9b40e06fb97752bef369b2a0190eaf">decode_url_safe</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">internal::decode</a>(s, <a class="code" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335">internal::URL_SAFE_CHARS</a>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> } <span class="comment">// namespace base64 {</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span
class="lineno"> 216</span> <span class="preprocessor">#endif // __STOUT_BASE64_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="base64_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_BASE64_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_BASE64_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <cctype></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class
="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespacebase64.html"> 24</a></span> <span class="keyword">namespace </span><a class="code" href="namespacebase64.html">base64</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html"> 26</a></span> <sp
an class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// This slightly modified base64 implementation from</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// cplusplus.com answer by modoran can be found at:</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// http://www.cplusplus.com/forum/beginner/51572/</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc"> 32</a></span> constexpr <span class="keywordtype">char</span> <a class="code"
href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc">STANDARD_CHARS</a>[] =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="stringliteral">"abcdefghijklmnopqrstuvwxyz"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="stringliteral">"0123456789+/"</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335"> 37</a></span> constexpr <span class="keywordtype">char</span> <a class="code" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335">URL_SAFE_CHARS</a>[] =</div><div clas
s="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="stringliteral">"abcdefghijklmnopqrstuvwxyz"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="stringliteral">"0123456789-_"</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818"> 43</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">encode</a>(</div><div class="line"><a name="l00044"></a><span cl
ass="lineno"> 44</span>  <span class="keyword">const</span> std::string& s,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> std::string& chars,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">bool</span> padding)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::string result;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">int</span> j = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array3[3];</di
v><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array4[4];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* bytesToEncode = s.c_str();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">size_t</span> length = s.size();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">while</span> (length--) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  array3[i++] = *(bytesToEncode++);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (i == 3) {</div><div class="l
ine"><a name="l00059"></a><span class="lineno"> 59</span>  array4[0] = (array3[0] & 0xfc) >> 2;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  array4[1] = ((array3[0] & 0x03) << 4) + ((array3[1] & 0xf0) >> 4);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  array4[2] = ((array3[1] & 0x0f) << 2) + ((array3[2] & 0xc0) >> 6);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  array4[3] = array3[2] & 0x3f;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span> (i = 0; i < 4; i++) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  result += chars[array4[i]];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a
><span class="lineno"> 66</span>  i = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (i != 0) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span> (j = i; j < 3; j++) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  array3[j] = <span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  array4[0] = (array3[0] & 0xfc) >> 2;</div><div class="line"><a name="
l00075"></a><span class="lineno"> 75</span>  array4[1] = ((array3[0] & 0x03) << 4) + ((array3[1] & 0xf0) >> 4);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  array4[2] = ((array3[1] & 0x0f) << 2) + ((array3[2] & 0xc0) >> 6);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  array4[3] = array3[2] & 0x3f;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">for</span> (j = 0; j < i + 1; j++) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  result += chars[array4[j]];</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (padding) {</div><div class="line"><a name="l00082"></a><span class="lineno">
82</span>  <span class="keywordflow">while</span> (i++ < 3) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  result += <span class="charliteral">'='</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l000
92"></a><span class="lineno"><a class="line" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69"> 92</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">decode</a>(<span class="keyword">const</span> std::string& s, <span class="keyword">const</span> std::string& chars)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">auto</span> isBase64 = [&chars](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) -> <span class="keywordtype">bool</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> (isalnum(c) || (c == chars[62]) || (c == chars[63]));</di
v><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  };</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">size_t</span> i = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array3[3];</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> array4[4];</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::string result;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">foreach</span> (<span class="keywordtype">un
signed</span> <span class="keywordtype">char</span> c, s) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (c == <span class="charliteral">'='</span>) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// TODO(bmahler): Note that this does not validate that</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// there are the correct number of '=' characters!</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">break</span>; <span class="comment">// Reached the padding.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span clas
s="lineno"> 110</span>  <span class="comment">// The base RFC (https://tools.ietf.org/html/rfc4648#section-3.3) explicitly</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// asks to reject non-alphabet characters including newlines and</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// whitespaces. However, other specifications like MIME simply ignore</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// characters outside the base alphabet ("be liberal in what you accept").</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Further, most implementation ignore whiltespace characters when</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment
">// processing encoded data. This allows tools to delimit encoded with</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// newlines or other whitespace characters for better readability, etc.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (isspace(c)) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span> (!isBase64(c)) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" hr
ef="classError.html">Error</a>(<span class="stringliteral">"Invalid character '"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(c) + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  array4[i++] = c;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (i == 4) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span> (i = 0; i < 4; i++) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  array4[i
] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(chars.find(array4[i]));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  array3[0] = (array4[0] << 2) + ((array4[1] & 0x30) >> 4);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  array3[1] = ((array4[1] & 0xf) << 4) + ((array4[2] & 0x3c) >> 2);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  array3[2] = ((array4[2] & 0x3) << 6) + array4[3];</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span> (i = 0; i < 3; i++) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> 
result += array3[i];</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  i = 0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (i != 0) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">size_t</span> j;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">for</span> (j = i; j < 4; j++) {</div><div class="line"><a
name="l00145"></a><span class="lineno"> 145</span>  array4[j] = 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">for</span> (j = 0; j < 4; j++) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  array4[j] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(chars.find(array4[j]));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  array3[0] = (array4[0] << 2) + ((array4[1] & 0x30) >> 4);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  array3[1] = ((array4[1] & 0xf) << 4) + ((array4[2] &
amp; 0x3c) >> 2);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  array3[2] = ((array4[2] & 0x3) << 6) + array4[3];</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">for</span> (j = 0; (j < i - 1); j++) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  result += array3[j];</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> 
</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="namespacebase64.html#a47c61bb5df3dae8cd38f44b6b69e5b4d"> 170</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">encode</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">internal::encode</a>(
s, <a class="code" href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc">internal::STANDARD_CHARS</a>, <span class="keyword">true</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="namespacebase64.html#ab3ba01437a30ea8938faaa92e9b72948"> 183</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">decode</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#
160; <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">internal::decode</a>(s, <a class="code" href="namespacebase64_1_1internal.html#a622ff5960fa75c8f838f40b5473766cc">internal::STANDARD_CHARS</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="namespacebase64.html#a684ce7ecc99e8ba6906c3a063b9ef71c"> 196</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespacebase64.html#a684ce7ecc99e8ba6906c3a063b9ef71c">encode_url_safe</a>(<span class="keyword">const</span> std::string& s, <span class="keywordtype">bool</span> padding = <span class="keyword">true</span>)</div><div clas
s="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">internal::encode</a>(s, <a class="code" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335">internal::URL_SAFE_CHARS</a>, padding);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespacebase64.html#aae9b40e06fb97752bef369b2a0190eaf"> 209</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacebase64.h
tml#aae9b40e06fb97752bef369b2a0190eaf">decode_url_safe</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="namespacebase64_1_1internal.html#a08e99be281678c1aedc09c8ede696f69">internal::decode</a>(s, <a class="code" href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335">internal::URL_SAFE_CHARS</a>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> } <span class="comment">// namespace base64 {</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span
class="lineno"> 216</span> <span class="preprocessor">#endif // __STOUT_BASE64_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespacebase64_1_1internal_html_af0cbe84ce20cf486d088248591305818"><div class="ttname"><a href="namespacebase64_1_1internal.html#af0cbe84ce20cf486d088248591305818">base64::internal::encode</a></div><div class="ttdeci">std::string encode(const std::string &s, const std::string &chars, bool padding)</div><div class="ttdef"><b>Definition:</b> base64.hpp:43</div></div>
<div class="ttc" id="namespacebase64_1_1internal_html_afb1eec684c43630078b7a6288cc17335"><div class="ttname"><a href="namespacebase64_1_1internal.html#afb1eec684c43630078b7a6288cc17335">base64::internal::URL_SAFE_CHARS</a></div><div class="ttdeci">constexpr char URL_SAFE_CHARS[]</div><div class="ttdef"><b>Definition:</b> base64.hpp:37</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/bytes_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/bytes_8hpp_source.html b/content/api/latest/c++/bytes_8hpp_source.html
index b127f37..c24a48c 100644
--- a/content/api/latest/c++/bytes_8hpp_source.html
+++ b/content/api/latest/c++/bytes_8hpp_source.html
@@ -57,7 +57,7 @@
<div class="ttc" id="classBytes_html_aea64a730637e49bd81fbbb10d146e8f1"><div class="ttname"><a href="classBytes.html#aea64a730637e49bd81fbbb10d146e8f1">Bytes::MEGABYTES</a></div><div class="ttdeci">static constexpr uint64_t MEGABYTES</div><div class="ttdef"><b>Definition:</b> bytes.hpp:35</div></div>
<div class="ttc" id="bytes_8hpp_html_ab8178989216bbbc9c2c750f4efe9aec2"><div class="ttname"><a href="bytes_8hpp.html#ab8178989216bbbc9c2c750f4efe9aec2">operator+</a></div><div class="ttdeci">Bytes operator+(const Bytes &lhs, const Bytes &rhs)</div><div class="ttdef"><b>Definition:</b> bytes.hpp:160</div></div>
<div class="ttc" id="classBytes_html_a044ebb80c167852ae2c79506352a2602"><div class="ttname"><a href="classBytes.html#a044ebb80c167852ae2c79506352a2602">Bytes::operator/=</a></div><div class="ttdeci">Bytes & operator/=(uint64_t divisor)</div><div class="ttdef"><b>Definition:</b> bytes.hpp:106</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classBytes_html_ac85371dbd9df4037a29afb284e722965"><div class="ttname"><a href="classBytes.html#ac85371dbd9df4037a29afb284e722965">Bytes::operator!=</a></div><div class="ttdeci">bool operator!=(const Bytes &that) const </div><div class="ttdef"><b>Definition:</b> bytes.hpp:86</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/chown_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/chown_8hpp_source.html b/content/api/latest/c++/chown_8hpp_source.html
index 16caf55..7296939 100644
--- a/content/api/latest/c++/chown_8hpp_source.html
+++ b/content/api/latest/c++/chown_8hpp_source.html
@@ -55,10 +55,10 @@
<a href="chown_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_CHOWN_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_CHOWN_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <fts.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <pwd.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#includ
e <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="stat_8hpp.html">stout/os/stat.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="line
no"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Set the ownership for a path. This function never follows any symlinks.</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceos.html#a9ea4b5bd8ccef02c74ceb9b4a497baab"> 30</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a9ea4b5bd8ccef02c74ceb9b4a497baab">chown</a>(</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afc544433253791fc5f87b8203c9b6
e63">uid_t</a> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a78ecefd3a9f3f0c110b9f6f038b690eb">gid_t</a> gid,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">bool</span> recursive)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">char</span>* path_[] = {<span class="keyword">const_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(path.c_str()), <spa
n class="keyword">nullptr</span>};</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  FTS* tree = ::fts_open(</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  path_, FTS_NOCHDIR | FTS_PHYSICAL, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span> (tree == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span
> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  FTSENT *node;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">while</span> ((node = ::fts_read(tree)) != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">switch</span> (node->fts_info) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// Preorder directory.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> FTS_D:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Regular file.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> FTS_F:</di
v><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Symbolic link.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">case</span> FTS_SL:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Symbolic link without target.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> FTS_SLNONE: {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (::lchown(node->fts_path, uid, gid) < 0) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error<
/a> = <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ::fts_close(tree);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>
  <span class="comment">// Unreadable directory.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> FTS_DNR:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// Error; errno is set.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">case</span> FTS_ERR:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Directory that causes cycles.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">case</span> FTS_DC:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// `stat(2)` failed.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <sp
an class="keywordflow">case</span> FTS_NS: {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  ::fts_close(tree);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> 
<span class="keywordflow">default</span>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span> (node->fts_level == FTS_ROOTLEVEL && !recursive) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</s
pan>  ::fts_close(tree);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Changes the specified path's user and group ownership to that of</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// the specified user.</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespaceos.html#a6170f18a0d87c3875d6f410b38919223"> 94</a></span> <span class="keyword">inline</span> <a class="code"
href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a9ea4b5bd8ccef02c74ceb9b4a497baab">chown</a>(</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">bool</span> recursive = <span class="keyword">true</span>)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="structpasswd.html">passwd</a>* <a class="code" href="structpasswd.html">passwd</a>;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  errno = 0;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> ((passwd = ::getpwnam(user.c_str())) == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> errno</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  ? <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to get user information for '"</span> + user + <span class="stringliteral">"'"</span>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  : <a class="co
de" href="classError.html">Error</a>(<span class="stringliteral">"No such user '"</span> + user + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a9ea4b5bd8ccef02c74ceb9b4a497baab">chown</a>(passwd-><a class="code" href="structpasswd.html#aa6e0e62ee3cf5152f2697a0104f627c1">pw_uid</a>, passwd-><a class="code" href="structpasswd.html#aefbacfb7dc7f7f47313d08707253e4c6">pw_gid</a>, path, recursive);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno">
112</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_CHOWN_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a96066cfc01f1f62fc25b56f6915800eb"><div class="ttname"><a href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">os::stat::uid</a></div><div class="ttdeci">Try< uid_t > uid(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:213</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_a698aa27e5ea6b1dc1c190b978c2f7960"><div class="ttname"><a href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">os::user</a></div><div class="ttdeci">Result< std::string > user(Option< uid_t > uid=None())</div><div class="ttdef"><b>Definition:</b> su.hpp:277</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="structpasswd_html_aefbacfb7dc7f7f47313d08707253e4c6"><div class="ttname"><a href="structpasswd.html#aefbacfb7dc7f7f47313d08707253e4c6">passwd::pw_gid</a></div><div class="ttdeci">gid_t pw_gid</div><div class="ttdef"><b>Definition:</b> pwd.hpp:30</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
[13/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp_source.html b/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp_source.html
index fbf70f7..8052367 100644
--- a/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp_source.html
+++ b/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">gtest.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="stout_2include_2stout_2gtest_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span cla
ss="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> 
</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_GTEST_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_GTEST_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <gtest/gtest.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">st
out/option.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifdef __FreeBSD__</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <sys/wait.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</
span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8h
pp.html#a132f4728e0e7ebab8dd069db7539cec5"> 34</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expr,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<T></a>& actual)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span> (actual.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  return ::testing::AssertionFailure()</di
v><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  << expr << <span class="stringliteral">" is NONE"</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest
_8hpp.html#a9c42a43dc448160ca174817baa269aaf"> 48</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expr,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<T></a>& actual)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> (actual.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  return ::testing::AssertionFailure()</div><di
v class="line"><a name="l00054"></a><span class="lineno"> 54</span>  << expr << <span class="stringliteral">": "</span> << actual.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a n
ame="l00062"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#ad0bdb0d91a1245ea8ff50ab019aea186"> 62</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expr,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& actual)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (actual.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l000
67"></a><span class="lineno"> 67</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  << expr << <span class="stringliteral">" is NONE"</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (actual.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  << expr << <span class="stringliteral">": "</span> << actual.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div
><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2></div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#adb152f87a157c905d17af2d051098df9"> 79</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#adb152f87a157c905d17af2d051098df9">AssertSomeEq</a>(</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expectedExpr,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> T1& expected,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> T2& actual) <span class="comment">// Duck typing!</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(actualEx
pr, actual);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (result) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span> (expected == actual.get()) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  << <span class="stringliteral">"Value of: ("</span> << actualExpr << <span class="stringliteral">").get()\n&qu
ot;</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  << <span class="stringliteral">" Actual: "</span> << ::testing::PrintToString(actual.get()) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  << <span class="stringliteral">"Expected: "</span> << expectedExpr << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  << <span class="stringliteral">"Which is: "</span> << ::testing::PrintToString(expected);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="li
ne"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a0be5869f812d3562577316398e04271c"> 104</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0be5869f812d3562577316398e04271c">AssertSomeNe</a>(</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span c
lass="keyword">const</span> <span class="keywordtype">char</span>* notExpectedExpr,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> T1& notExpected,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> T2& actual) <span class="comment">// Duck typing!</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(actualExpr, actual);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111
</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (result) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (notExpected == actual.get()) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  << <span class="stringliteral">" Value of: ("</span> << actualExpr << <span class="stringliteral">").get()\n"</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  << <span class="stringliteral">" Actual: "</span> << ::testing::PrintToString(actual.get()) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00117"></a><span cl
ass="lineno"> 117</span>  << <span class="stringliteral">"Not expected: "</span> << notExpectedExpr << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  << <span class="stringliteral">" Which is: "</span> << ::testing::PrintToString(notExpected);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>
  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a0add664e84bbf99f845f1b715dd63f90"> 128</a></span> <span class="preprocessor">#define ASSERT_SOME(actual) \</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor"> ASSERT_PRED_FORMAT1(AssertSome, actual)</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="stout_2
include_2stout_2gtest_8hpp.html#a94f3dab228965564a5960e3ab45b6d7f"> 132</a></span> <span class="preprocessor">#define EXPECT_SOME(actual) \</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor"> EXPECT_PRED_FORMAT1(AssertSome, actual)</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a1d2cd920bf9b9543277725dd65a486ab"> 136</a></span> <span class="preprocessor">#define ASSERT_SOME_EQ(expected, actual) \</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertSomeEq, expected, actual)</span></div><div class="line"><a name="l00138"></a><span c
lass="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a6942b83c31084a6fbfe4228d500de2b2"> 140</a></span> <span class="preprocessor">#define EXPECT_SOME_EQ(expected, actual) \</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertSomeEq, expected, actual)</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#aae750d22a719741b2a76dd8a340ac10f"> 144</a></span> <span class="preprocessor">#define ASSERT_SOME_NE(notExpected, actual)
\</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertSomeNe, notExpected, actual)</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#af041c3091363b0b1d6937c140d1453cf"> 148</a></span> <span class="preprocessor">#define EXPECT_SOME_NE(notExpected, actual) \</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertSomeNe, notExpected, actual)</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a nam
e="l00152"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#ae71deaa9ab57c4c659a0d867c3d2f90a"> 152</a></span> <span class="preprocessor">#define ASSERT_SOME_TRUE(actual) \</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertSomeEq, true, actual)</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a86c843b59d82983ce64cdbfc95c98ca3"> 156</a></span> <span class="preprocessor">#define EXPECT_SOME_TRUE(actual) \</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertSom
eEq, true, actual)</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a48e716af4fce20c08ffe2e319d04500e"> 160</a></span> <span class="preprocessor">#define ASSERT_SOME_FALSE(actual) \</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertSomeEq, false, actual)</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a9c1dcea4db5cbc7b679119f7fa8dd029"> 164</a></span> <span cla
ss="preprocessor">#define EXPECT_SOME_FALSE(actual) \</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertSomeEq, false, actual)</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#acb9e9f851544bdf4924fa366939217ea"> 168</a></span> <span class="preprocessor">#define ASSERT_ERROR(actual) \</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor"> ASSERT_TRUE(actual.isError())</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </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"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#abc44e71439fda9f4bbbd3d080bd1b7ba"> 172</a></span> <span class="preprocessor">#define EXPECT_ERROR(actual) \</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor"> EXPECT_TRUE(actual.isError())</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#aed5426179b756841415f14c2a39fb28d"> 176</a></span> <span class="preprocessor">#define ASSERT_NONE(actual) \</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor"> ASSERT_TRUE(actual.isNone())
</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a7fbc61bae2372728e385dafba82c7511"> 180</a></span> <span class="preprocessor">#define EXPECT_NONE(actual) \</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor"> EXPECT_TRUE(actual.isNone())</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// Creates a gtest `TEST` that is disabled on Windows.</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185<
/span> <span class="comment">// TODO(hausdorff): Remove after temporarily-disabled tests are fixed on</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// Windows. See MESOS-6392.</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a915ee025d609b11b6bf8e42caf135328"> 188</a></span> <span class="preprocessor">#define TEST_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor"> TEST(test_case_name, test_name)</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00191"></a><spa
n class="lineno"> 191</span> <span class="preprocessor">#define TEST_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor"> TEST(test_case_name, DISABLED_##test_name)</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">// Creates a gtest `TEST_F` that is disabled on Windows.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment">// TODO(hausdorff): Remove after temporarily-disabled tests are fixed on</span></div><div class="line"><a name="l00198
"></a><span class="lineno"> 198</span> <span class="comment">// Windows. See MESOS-6392.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#adb3921291176baa14893ec8ca6712f27"> 200</a></span> <span class="preprocessor">#define TEST_F_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor"> TEST_F(test_case_name, test_name)</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#define TEST_F_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div
class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor"> TEST_F(test_case_name, DISABLED_##test_name)</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment">// Creates a gtest `TEST_P` that is disabled on Windows.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment">// TODO(greggomann): Remove after temporarily-disabled tests are fixed on</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment">// Windows. See MESOS-6392.</span></div><div class="line"><a name="l00211"><
/a><span class="lineno"> 211</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#ac4dd3e1ff6ee0bd6e7b1aa4c5646015b"> 212</a></span> <span class="preprocessor">#define TEST_P_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor"> TEST_P(test_case_name, test_name)</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#define TEST_P_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> TEST_P(test_case_name, DISABLED_##test_na
me)</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// Creates a gtest `TYPED_TEST` that is disabled on Windows.</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">// TODO(andschwa): Remove after temporarily-disabled tests are fixed on</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment">// Windows. See MESOS-6392.</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00224"></a><
span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#aab2510f7e44e82ebd344e8bb3aaffe81"> 224</a></span> <span class="preprocessor">#define TYPED_TEST_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor"> TYPED_TEST(test_case_name, test_name)</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#define TYPED_TEST_TEMP_DISABLED_ON_WINDOWS(test_case_name, test_name) \</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"> TYPED_TEST(test_case_name, DISABLED_##test_name)</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#e
ndif // __WINDOWS__</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// NOTE: On Windows, the closest equivalent to `sleep` is `timeout`.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment">// Unfortunately, `timeout` requires an interactive terminal, otherwise</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="comment">// it errors out immediately. Instead, we use `ping` against localhost</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment">// with a count. On Windows, `ping` waits one second between pings.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</s
pan> <span class="comment">// Additionally, because `ping` requires a count greater than 0,</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// we simply `exit 0` if the sleep is too short.</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">//</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment">// This must not be replaced with `powershell -c Start-Sleep`, because</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment">// that causes flaky tests due to PowerShell crashing when a test</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// machine is overloaded. See MESOS-8308.</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="prepro
cessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a55ee6e689aef77f87dfdb335d0a7ab40"> 243</a></span> <span class="preprocessor">#define SLEEP_COMMAND(x) "sleep " #x</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor">#define SLEEP_COMMAND(x) \</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor"> ((x) > 0 ? "ping 127.0.0.1 -n " #x " > NUL" : "cmd /C exit 0")</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</sp
an> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a35ffb1309cac5b5df236add23d5582a4"> 250</a></span> inline ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a35ffb1309cac5b5df236add23d5582a4">AssertExited</a>(</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> actual)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span> (<a class="code" href="3rd
party_2stout_2include_2stout_2windows_8hpp.html#af9a4ddf9eee6c4a3bc9be070d59b7ccf">WIFEXITED</a>(actual)) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a6953e62fd0dec274a397678d31c344b4">WIFSIGNALED</a>(actual)) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  << <span class="stringliteral">"Expecting WIFEXITED("</span> << actualExpr << <span class
="stringliteral">") but "</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  << <span class="stringliteral">" WIFSIGNALED("</span> << actualExpr << <span class="stringliteral">") is true and "</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  << <span class="stringliteral">"WTERMSIG("</span> << actualExpr << <span class="stringliteral">") is "</span> << <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(WTERMSIG(actual));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (WIFSTOPPED(actual)) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  return ::testing::AssertionFailure()</div><div
class="line"><a name="l00264"></a><span class="lineno"> 264</span>  << <span class="stringliteral">"Expecting WIFEXITED("</span> << actualExpr << <span class="stringliteral">") but"</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  << <span class="stringliteral">" WIFSTOPPED("</span> << actualExpr << <span class="stringliteral">") is true and "</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  << <span class="stringliteral">"WSTOPSIG("</span> << actualExpr << <span class="stringliteral">") is "</span> << <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(WSTOPSIG(actual));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#endif // __
WINDOWS__</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  << <span class="stringliteral">"Expecting WIFEXITED("</span> << actualExpr << <span class="stringliteral">") but got"</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  << <span class="stringliteral">" unknown value: "</span> << ::testing::PrintToString(actual);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div><div class="line"><a name="l00275"></a><span class="lineno">
275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a6edc9bb8992aef99bdcb5213266ab49e"> 276</a></span> <span class="preprocessor">#define ASSERT_EXITED(expected, actual) \</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertExited, expected, actual)</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#addaa736ef62e1837941905b0ba4f1b93"> 280</a></span> <span class="preprocessor">#define EXPECT_EXITED(expected, actual) \</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span
class="preprocessor"> EXPECT_PRED_FORMAT2(AssertExited, expected, actual)</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a9f0924a7f42c846a34589d10d60d7538"> 284</a></span> inline ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a9f0924a7f42c846a34589d10d60d7538">AssertExitStatusEq</a>(</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expectedExpr,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00287"></a><span class="linen
o"> 287</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> expected,</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> actual)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a35ffb1309cac5b5df236add23d5582a4">AssertExited</a>(actualExpr, actual);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span> (result) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span> (<a class="code" href="3rdparty_2stout
_2include_2stout_2windows_8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(actual) == expected) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  << <span class="stringliteral">"Value of: WEXITSTATUS("</span> << actualExpr << <span class="stringliteral">")\n"</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  << <span class="stringliteral">" Actual: "</span> << ::testing::PrintToString(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_
8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(actual)) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  << <span class="stringliteral">"Expected: "</span> << expectedExpr << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  << <span class="stringliteral">"Which is: "</span> << ::testing::PrintToString(expected);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l
00305"></a><span class="lineno"> 305</span> }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a0fbb9aaec69edbb04a48525cbb0df14f"> 308</a></span> <span class="preprocessor">#define ASSERT_WEXITSTATUS_EQ(expected, actual) \</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertExitStatusEq, expected, actual)</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#af6f8835a8aa28206986c8e
3d8ba9638c"> 312</a></span> <span class="preprocessor">#define EXPECT_WEXITSTATUS_EQ(expected, actual) \</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertExitStatusEq, expected, actual)</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a0eee39affc289ff372336ce8bbeef40a"> 317</a></span> inline ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0eee39affc289ff372336ce8bbeef40a">AssertExitStatusNe</a>(</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span clas
s="keyword">const</span> <span class="keywordtype">char</span>* expectedExpr,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> expected,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> actual)</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a35ffb1309cac5b5df236add23d5582a4">AssertExited</a>(actualExpr, actual);</div><div class="line"><a name="l00324"></a><span class="lineno"
> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span> (result) {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(actual) != expected) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  << <span class="stringliteral">"Value of: WEXITSTATUS("</span> << actualExpr &l
t;< <span class="stringliteral">")\n"</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  << <span class="stringliteral">" Actual: "</span> << ::testing::PrintToString(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(actual)) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  << <span class="stringliteral">"Expected: "</span> << expectedExpr << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  << <span class="stringliteral">"Which is: "</span> << ::testing::PrintToString(expected);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><
a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#accf76a475038f20704d30b6bd66710a9"> 341</a></span> <span class="preprocessor">#define ASSERT_WEXITSTATUS_NE(expected, actual) \</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertExitStatusNe, expected, actual)</span></div
><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#ad38707e6d3876b027320749e67e9fe01"> 345</a></span> <span class="preprocessor">#define EXPECT_WEXITSTATUS_NE(expected, actual) \</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertExitStatusNe, expected, actual)</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment">// Signals aren't used in Windows, so #ifdef these out.</span></div><div class="line"><a name="l
00350"></a><span class="lineno"> 350</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a799901963033736968a8328d9aa63b38"> 351</a></span> inline ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a799901963033736968a8328d9aa63b38">AssertSignaled</a>(</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> actual)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (<a class="cod
e" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#af9a4ddf9eee6c4a3bc9be070d59b7ccf">WIFEXITED</a>(actual)) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  << <span class="stringliteral">"Expecting WIFSIGNALED("</span> << actualExpr << <span class="stringliteral">") but "</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  << <span class="stringliteral">" WIFEXITED("</span> << actualExpr << <span class="stringliteral">") is true and "</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  << <span class="stringliteral">"WEXITSTATUS("</span> << actualExpr << <span class="stringliteral">") is "</span> << <a cl
ass="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(actual);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a6953e62fd0dec274a397678d31c344b4">WIFSIGNALED</a>(actual)) {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (WIFSTOPPED(actual)) {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  << <span class="stringliteral">"Expecti
ng WIFSIGNALED("</span> << actualExpr << <span class="stringliteral">") but"</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  << <span class="stringliteral">" WIFSTOPPED("</span> << actualExpr << <span class="stringliteral">") is true and "</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  << <span class="stringliteral">"WSTOPSIG("</span> << actualExpr << <span class="stringliteral">") is "</span> << <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(WSTOPSIG(actual));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#
160; return ::testing::AssertionFailure()</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  << <span class="stringliteral">"Expecting WIFSIGNALED("</span> << actualExpr << <span class="stringliteral">") but got"</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  << <span class="stringliteral">" unknown value: "</span> << ::testing::PrintToString(actual);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#af182a83b056fb6a40855d939c7a98443"> 375</a></span> <span class="preprocessor">#define ASSERT_SIGNALED(expected, ac
tual) \</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertSignaled, expected, actual)</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a2e14e8db6cbc03003e3b37b02fa754e2"> 379</a></span> <span class="preprocessor">#define EXPECT_SIGNALED(expected, actual) \</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertSignaled, expected, actual)</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div c
lass="line"><a name="l00383"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a5e399531eaa0ff53ca397cadd739fe33"> 383</a></span> inline ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a5e399531eaa0ff53ca397cadd739fe33">AssertTermSigEq</a>(</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expectedExpr,</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> expected,</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keyword">const</span> <span class="keywordtype">int</span
> actual)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a799901963033736968a8328d9aa63b38">AssertSignaled</a>(actualExpr, actual);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">if</span> (result) {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">if</span> (WTERMSIG(actual) == expected) {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  } <span class="keywordflow">else</span> {</div><div c
lass="line"><a name="l00395"></a><span class="lineno"> 395</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  << <span class="stringliteral">"Value of: WTERMSIG("</span> << actualExpr << <span class="stringliteral">")\n"</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  << <span class="stringliteral">" Actual: "</span> << <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(WTERMSIG(actual)) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  << <span class="stringliteral">"Expected: "</span> << expectedExpr << <span class="stringliteral">"\n"</span></div><div class="line"><a name
="l00399"></a><span class="lineno"> 399</span>  << <span class="stringliteral">"Which is: "</span> << <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(expected);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"><a class="line"
href="stout_2include_2stout_2gtest_8hpp.html#ad80789c9ee764b85fbfee97683e1dae7"> 407</a></span> <span class="preprocessor">#define ASSERT_WTERMSIG_EQ(expected, actual) \</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertTermSigEq, expected, actual)</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a6bf2b8705fa80981a718bf55ba14db11"> 411</a></span> <span class="preprocessor">#define EXPECT_WTERMSIG_EQ(expected, actual) \</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertTermSigEq, expected, actual)</sp
an></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a4af6af348abe6fc830763329ae961e5f"> 415</a></span> inline ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a4af6af348abe6fc830763329ae961e5f">AssertTermSigNe</a>(</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expectedExpr,</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">const</span> <span class="keywordt
ype">int</span> expected,</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> actual)</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a799901963033736968a8328d9aa63b38">AssertSignaled</a>(actualExpr, actual);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span> (result) {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span> (WTERMSIG(actual) != expected) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> 
return ::testing::AssertionSuccess();</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  << <span class="stringliteral">"Value of: WTERMSIG("</span> << actualExpr << <span class="stringliteral">")\n"</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  << <span class="stringliteral">" Actual: "</span> << <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(WTERMSIG(actual)) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> 
<< <span class="stringliteral">"Expected: "</span> << expectedExpr << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  << <span class="stringliteral">"Which is: "</span> << <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(expected);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> }</div><div class="line"><a name="l00437"></a><span class="lineno">
437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> </div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a62cb0011a53d50333095f035e0283de1"> 439</a></span> <span class="preprocessor">#define ASSERT_WTERMSIG_NE(expected, actual) \</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor"> ASSERT_PRED_FORMAT2(AssertTermSigNe, expected, actual)</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> </div><div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#ae522965b91bc36ce90dd3a91c269a28e"> 443</a></span> <span class="preprocessor">#define EXPECT_WTERMSIG_NE(expected, actual)
\</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor"> EXPECT_PRED_FORMAT2(AssertTermSigNe, expected, actual)</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor">#endif // __STOUT_GTEST_HPP__</span></div><div class="ttc" id="stout_2include_2stout_2gtest_8hpp_html_a0eee39affc289ff372336ce8bbeef40a"><div class="ttname"><a href="stout_2include_2stout_2gtest_8hpp.html#a0eee39affc289ff372336ce8bbeef40a">AssertExitStatusNe</a></div><div class="ttdeci">inline::testing::AssertionResult AssertExitStatusNe(const char *expectedExpr, const char *actualExpr, const int expected, const int actual)</div><div class="ttdef"><b>Definition:</b> gtest.
hpp:317</div></div>
+<a href="stout_2include_2stout_2gtest_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span cla
ss="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> 
</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_GTEST_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_GTEST_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <gtest/gtest.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">st
out/option.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifdef __FreeBSD__</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <sys/wait.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</
span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8h
pp.html#a132f4728e0e7ebab8dd069db7539cec5"> 34</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expr,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<T></a>& actual)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span> (actual.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  return ::testing::AssertionFailure()</di
v><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  << expr << <span class="stringliteral">" is NONE"</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E></div><div class="line"><a name="l00048"></a><span class="lineno"><a class=
"line" href="stout_2include_2stout_2gtest_8hpp.html#aa8a6bf7719a389a661a3580da70a71fd"> 48</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expr,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<T, E></a>& actual)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> (actual.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  r
eturn ::testing::AssertionFailure()</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  << expr << <span class="stringliteral">": "</span> << actual.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span> <<span class="keyword">typen
ame</span> T></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#ad0bdb0d91a1245ea8ff50ab019aea186"> 62</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expr,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& actual)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (actual.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</
a>()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  << expr << <span class="stringliteral">" is NONE"</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (actual.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  << expr << <span class="stringliteral">": "</span> << actual.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>();</div><div class="line"><a name="l00072"></a><sp
an class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2></div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#adb152f87a157c905d17af2d051098df9"> 79</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#adb152f87a157c
905d17af2d051098df9">AssertSomeEq</a>(</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expectedExpr,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> T1& expected,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> T2& actual) <span class="comment">// Duck typing!</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7e
bab8dd069db7539cec5">AssertSome</a>(actualExpr, actual);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (result) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span> (expected == actual.get()) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  return ::testing::AssertionSuccess();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  return ::testing::AssertionFailure()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  << <span class="stringliteral">"Value of: ("</span> << actualExpr << <s
pan class="stringliteral">").get()\n"</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  << <span class="stringliteral">" Actual: "</span> << ::testing::PrintToString(actual.get()) << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  << <span class="stringliteral">"Expected: "</span> << expectedExpr << <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  << <span class="stringliteral">"Which is: "</span> << ::testing::PrintToString(expected);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="li
neno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2gtest_8hpp.html#a0be5869f812d3562577316398e04271c"> 104</a></span> ::testing::AssertionResult <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a0be5869f812d3562577316398e04271c">AssertSomeNe</a>(</div><div class="line"><a name="l00105"></a><span
class="lineno"> 105</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* notExpectedExpr,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* actualExpr,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> T1& notExpected,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> T2& actual) <span class="comment">// Duck typing!</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  const ::testing::AssertionResult result = <a class="code" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a>(actualExpr, actual);</div><div class="line"><a
name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name=
<TRUNCATED>
[04/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2mac_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2mac_8hpp_source.html b/content/api/latest/c++/windows_2mac_8hpp_source.html
index 5f05e60..7963e8e 100644
--- a/content/api/latest/c++/windows_2mac_8hpp_source.html
+++ b/content/api/latest/c++/windows_2mac_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">mac.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="windows_2mac_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_MAC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_WINDOWS_MAC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"
> 20</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span> <span class="comment">// For `iphlpapi.h`.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a
name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Network utilities.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Returns the MAC address of a given link device. The link device is</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// specified using its name. Returns an error if the link device is not found.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<MAC></a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac
</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  DWORD result;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ULONG <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Indicates whether the link device is found or not.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00038"></a><span class="
lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// Make an initial call to GetAdaptersInfo to get structure size.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span> (GetAdaptersInfo(<span class="keyword">nullptr</span>, &size) != ERROR_BUFFER_OVERFLOW) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Calling GetAdaptersInfo returned unexpected result"</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::vector<IP_ADAPTER_INF
O> adapterInfo(size / <span class="keyword">sizeof</span>(IP_ADAPTER_INFO));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  result = GetAdaptersInfo(</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  static_cast<PIP_ADAPTER_INFO>(adapterInfo.data()),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  &size);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (result != NO_ERROR) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(result, <span class="stringliteral">"GetAdaptersInfo failed"</span>);</div><div class="line"><a name="l00051"></a><span class="line
no"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> IP_ADAPTER_INFO& ip_adapter, adapterInfo) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span> (!strcmp(ip_adapter.AdapterName, name.c_str())) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  found = <span class="keyword">true</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (ip_adapter.AddressLength == 6) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// NOTE: Althoug
h the `AddressLength` is 6, the size of the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// `Address` byte buffer is usually larger than required, which</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// means we need to copy the bytes before the `MAC` constructor</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// will accept them.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  uint8_t mac_buffer[6];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespaceutils.html#ac8be4e5e1fedfabe178ca20b6a37349c">std::copy</a>(ip_adapter.Address, ip_adapter.Address + 6, mac_buffer);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> 
MAC <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(mac_buffer);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Ignore if the address is 0 so that the results are</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// consistent across all platforms.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>) == <span class="stringliteral">"00:00:00:00:00:00"</span>) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class=
"keywordflow">continue</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (!found) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <spa
n class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot find the link device"</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="prepro
cessor">#endif // __STOUT_WINDOWS_MAC_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="windows_2mac_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_MAC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_WINDOWS_MAC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"
> 20</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span> <span class="comment">// For `iphlpapi.h`.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a
name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Network utilities.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Returns the MAC address of a given link device. The link device is</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// specified using its name. Returns an error if the link device is not found.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<MAC></a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac
</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  DWORD result;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ULONG <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Indicates whether the link device is found or not.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00038"></a><span class="
lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// Make an initial call to GetAdaptersInfo to get structure size.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span> (GetAdaptersInfo(<span class="keyword">nullptr</span>, &size) != ERROR_BUFFER_OVERFLOW) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Calling GetAdaptersInfo returned unexpected result"</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::vector<IP_ADAPTER_INF
O> adapterInfo(size / <span class="keyword">sizeof</span>(IP_ADAPTER_INFO));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  result = GetAdaptersInfo(</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  static_cast<PIP_ADAPTER_INFO>(adapterInfo.data()),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  &size);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (result != NO_ERROR) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(result, <span class="stringliteral">"GetAdaptersInfo failed"</span>);</div><div class="line"><a name="l00051"></a><span class="line
no"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> IP_ADAPTER_INFO& ip_adapter, adapterInfo) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span> (!strcmp(ip_adapter.AdapterName, name.c_str())) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  found = <span class="keyword">true</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (ip_adapter.AddressLength == 6) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// NOTE: Althoug
h the `AddressLength` is 6, the size of the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// `Address` byte buffer is usually larger than required, which</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// means we need to copy the bytes before the `MAC` constructor</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// will accept them.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  uint8_t mac_buffer[6];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespaceutils.html#ac8be4e5e1fedfabe178ca20b6a37349c">std::copy</a>(ip_adapter.Address, ip_adapter.Address + 6, mac_buffer);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> 
MAC <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(mac_buffer);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Ignore if the address is 0 so that the results are</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// consistent across all platforms.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>) == <span class="stringliteral">"00:00:00:00:00:00"</span>) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class=
"keywordflow">continue</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (!found) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <spa
n class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot find the link device"</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="prepro
cessor">#endif // __STOUT_WINDOWS_MAC_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:106</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2mkdtemp_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2mkdtemp_8hpp_source.html b/content/api/latest/c++/windows_2mkdtemp_8hpp_source.html
index 47bc615..b571910 100644
--- a/content/api/latest/c++/windows_2mkdtemp_8hpp_source.html
+++ b/content/api/latest/c++/windows_2mkdtemp_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="windows_2mkdtemp_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a>
<span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//
distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_MKDTEMP_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_MKDTEMP_HPP__</spa
n></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <random></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp
.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="mkdir_8hpp.html">stout/os/mkdir.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="temp_8hpp.html">stout/os/temp.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class=
"line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Creates a temporary directory using the specified path</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// template. The template may be any path with _6_ `Xs' appended to</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// it, for example /tmp/temp.XXXXXX. The trailing `Xs' are replaced</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// with a unique alphanumeric c
ombination.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">mkdtemp</a>(</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a> = <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">os::temp</a>(), <span class="stringliteral">"XXXXXX"</span>))</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// NOTE: We'd like to avoid reallocating `postfixTemplate` and `alphabet`,</span></
div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// and to avoid recomputing their sizes on each call to `mkdtemp`, so we</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// make them `static const` and use the slightly awkward `sizeof` trick to</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// compute their sizes once instead of calling `strlen` for each call.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> postfixTemplate[] = <span class="stringliteral">"XXXXXX"</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class
="keywordtype">size_t</span> postfixSize = <span class="keyword">sizeof</span>(postfixTemplate) - 1;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a>(<a class="code" href="namespacepath.html">path</a>, postfixTemplate)) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="stringliteral">"Invalid template passed to `os::mkdtemp`: template '"</span> + <a class="code" href="namespacepath.html">path</a> +</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> 
<span class="stringliteral">"' should end with 6 'X' characters"</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> alphabet[] =</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="stringliteral">"0123456789"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="stringliteral">"ABCDEFGHIJKLMNOPQRSTUVWXYZ"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="stringliteral">"abcdefghijklmnopqrstuvwxyz"</span>;</div><div class="line"><a name="l00059"></a><span cla
ss="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// NOTE: The maximum addressable index in a string is the total length of the</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// string minus 1; but C strings have an extra null character at the end, so</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// the size of the array is actually one more than the length of the string,</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// which is why we're subtracting 2 here.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> maxAlphabetIndex = <span class="keyw
ord">sizeof</span>(alphabet) - 2;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::string postfix(postfixTemplate);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">static</span> thread_local std::mt19937 generator((std::random_device())());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < postfixSize; ++i) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">int</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> = generator() % maxAlphabetIndex;</div><div class="line"><a name="l00071"
></a><span class="lineno"> 71</span>  postfix[i] = alphabet[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Replace template, make directory.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string tempPath = <a class="code" href="namespacepath.html">path</a></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  .substr(0, <a class="code" href="namespacepath.html">path</a>.length() - postfixSize)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  .<a class="code" href="namespaceprotobuf.html#aa693e51d8d57a50543a7c2fb686a3ab3">append
</a>(postfix);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">mkdir</a> = <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a>(tempPath, <span class="keyword">false</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (mkdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(mkdir.<a class="code" href="classTry.html#aec4a11ddd3c03
6e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> tempPath;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_MKDTEMP_HPP__</span></div><div class="ttc" id="n
amespacestrings_html_a04772ad549ec2958e0cd80218c32a865"><div class="ttname"><a href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a></div><div class="ttdeci">bool endsWith(const std::string &s, const std::string &suffix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:393</div></div>
<div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespacepath_html_aa86b16a2171cec90bb3337930513ef0f"><div class="ttname"><a href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a></div><div class="ttdeci">std::string join(const std::string &path1, const std::string &path2, const char _separator=os::PATH_SEPARATOR)</div><div class="ttdef"><b>Definition:</b> path.hpp:56</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2mktemp_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2mktemp_8hpp_source.html b/content/api/latest/c++/windows_2mktemp_8hpp_source.html
index 99f8203..7c9153d 100644
--- a/content/api/latest/c++/windows_2mktemp_8hpp_source.html
+++ b/content/api/latest/c++/windows_2mktemp_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="windows_2mktemp_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">
//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cl
ass="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_MKTEMP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_MKTEMP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00020"></a><span cl
ass="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="close_8hp
p.html">stout/os/close.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="open_8hpp.html">stout/os/open.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="temp_8hpp.html">stout/os/temp.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno">
31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Creates a temporary file using the specified path template. The</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// template may be any path with _6_ `Xs' appended to it, for example</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// /tmp/temp.XXXXXX. The trailing `Xs' are replaced with a unique</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class=
"comment">// alphanumeric combination.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#a913abd73990a86de728ab7141b714b85">mktemp</a>(</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a> = <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">os::temp</a>(), <span class="stringliteral">"XXXXXX"</span>))</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">const</span> std::wstring <a class="code" href="namespaceinte
rnal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a> = <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">::internal::windows::longpath</a>(<a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::vector<wchar_t> buffer(longpath.begin(), longpath.end());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// The range does not include the null terminator, needed to reconstruct</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// the next string.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  buffer.push_back(L<span class="charliteral">'\0'</span>);</div><div class="line"><a name="l00048
"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// NOTE: in the POSIX spec, `mkstemp` will generate a random filename from</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// the `path` template, `open` that filename, and return the resulting file</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// descriptor. On Windows, `_mktemp_s` will actually only generate the path,</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// so here we actually have to call `open` ourselves to get a file descriptor</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// we can return as a result.</span></div><div class="line"><a name="l00054"></a><
span class="lineno"> 54</span>  <span class="keywordflow">if</span> (::_wmktemp_s(buffer.data(), buffer.size()) != 0) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> std::string temp_file = <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(std::wstring(buffer.data()));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// NOTE: We open the file with read/write access for
the given user, an</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// attempt to match POSIX's specification of `mkstemp`. We use `_S_IREAD` and</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// `_S_IWRITE` here instead of the POSIX equivalents. On Windows the file is</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// is not present, we use `_O_CREAT` option when opening the file.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classTry.html">Try<int_fd></a> fd =</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(temp_file, O_RDWR | O_CREAT | O_EXCL, _S_IREAD | _S_IWRITE);</div><div class="l
ine"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (fd.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(fd.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// We ignore the return value of close(). This is because users</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// calling this function are interested in the return value of</span></div><div cl
ass="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// mkstemp(). Also an unsuccessful close() doesn't affect the file.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="namespacestrings.html#a3fbaeb4d589c49ac115fab3412073ca7">strings::remove</a>(temp_file, os::LONGPATH_PREFIX, <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1containerizer_1_1paths.html#abb8ab3e62de157d1a7a81e08888ec30cabf80c29a65453b2615d8f9bd83f8f3d6">strings::Mode::PREFIX</a>);</div><div class="line"><a name="l00076"
></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_MKTEMP_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_a913abd73990a86de728ab7141b714b85"><div class="ttname"><a href="namespaceos.html#a913abd73990a86de728ab7141b714b85">os::mktemp</a></div><div class="ttdeci">Try< std::string > mktemp(const std::string &path=path::join(os::temp(),"XXXXXX"))</div><div class="ttdef"><b>Definition:</b> mktemp.hpp:36</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2open_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2open_8hpp_source.html b/content/api/latest/c++/windows_2open_8hpp_source.html
index fec2850..97c680d 100644
--- a/content/api/latest/c++/windows_2open_8hpp_source.html
+++ b/content/api/latest/c++/windows_2open_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="windows_2open_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//
</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div clas
s="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <fcntl.h></span> <span class="comment">// For file access flags like `_O_CREAT`.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class=
"preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span> <span class="comment">// For `mode_t`.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno">
26</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// TODO(andschwa): Windows does not support the Linux extension</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// O_NONBLOCK, as asynchronous I/O is done through other mechanisms.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Overlapped I/O will be implemented later.</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#a3e8a4870d44496f4236c6c7e32722d97"> 31</a></span> constexpr <span class="keywordtype">int</span> <a class="code" href="windows_2open
_8hpp.html#a3e8a4870d44496f4236c6c7e32722d97">O_NONBLOCK</a> = 0;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Windows does not support the Linux extension O_SYNC, as buffering</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// is done differently.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// TODO(andschwa): This could be equivalent to</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// `FILE_FLAG_WRITE_THROUGH`, but we don't seem to need it.</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c"> 37</a></span> constexpr <span class="keyw
ordtype">int</span> <a class="code" href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c">O_SYNC</a> = 0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// Windows does not support the Linux extension O_CLOEXEC. Instead, by</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// default we set all handles to be non-inheritable.</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067"> 41</a></span> constexpr <span class="keywordtype">int</span> <a class="code" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067">O_CLOEXEC</a> = 0;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span
class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// TODO(andschwa): Handle specified creation permissions in `mode_t mode`. See</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// MESOS-3176.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<int_fd></a> <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">open</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>, <span class="keywordtype">int</span> oflag, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8
hpp.html#a8a35dd1207a16dfa8b1d4163176d828c">mode_t</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a> = 0)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::wstring <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a> = <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">::internal::windows::longpath</a>(path);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// Map the POSIX `oflag` access flags.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="commen
t">// O_APPEND: Write only appends.</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">//</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// NOTE: We choose a `write` flag here because emulating `O_APPEND`</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// requires granting the `FILE_APPEND_DATA` access right, but not</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// the `FILE_WRITE_DATA` access right, which `GENERIC_WRITE` would</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// otherwise grant.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">const</span> DWORD <a class="code" href="namespaceos.
html#a73da9d49515dfff761c4887c3d6032c0">write</a> = (oflag & O_APPEND) ? FILE_APPEND_DATA : GENERIC_WRITE;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  DWORD <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">access</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">switch</span> (oflag & (O_RDONLY | O_WRONLY | O_RDWR)) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> O_RDONLY: {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  access = GENERIC_READ;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</spa
n>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">case</span> O_WRONLY: {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  access = <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> O_RDWR: {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  access = GENERIC_READ | <a class="code" href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">write</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflo
w">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Access mode not specified."</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Map the POSIX `oflag` creation flags.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  DWORD
<a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">switch</span> (oflag & (O_CREAT | O_EXCL | O_TRUNC)) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">case</span> O_CREAT: {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Create a new file or open an existing file.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  create = OPEN_ALWAYS;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywor
dflow">case</span> O_CREAT | O_EXCL:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">case</span> O_CREAT | O_EXCL | O_TRUNC: {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Create a new file, but fail if it already exists.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Ignore `O_TRUNC` with `O_CREAT | O_EXCL`</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  create = CREATE_NEW;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">case</span> O_CREAT | O_TRUNC:
{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Truncate file if it already exists.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  create = CREATE_ALWAYS;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> O_EXCL:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">case</span> O_EXCL | O_TRUNC: {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`O_EXCL` is undef
ined without `O_CREAT`."</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">case</span> O_TRUNC: {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// Truncate file if it exists, otherwise fail.</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  create = TRUNCATE_EXISTING;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="
comment">// Open file if it exists, otherwise fail.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  create = OPEN_EXISTING;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  longpath.data(),</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</s
pan>  <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">access</a>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Share all access so we don't lock the file.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// Disable inheritance by default.</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  FILE_ATTRIBUTE_NORMAL,</div><div
class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// No template file.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> handle;</d
iv><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_OPEN_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="windows_2open_8hpp_html_a3e8a4870d44496f4236c6c7e32722d97"><div class="ttname"><a href="windows_2open_8hpp.html#a3e8a4870d44496f4236c6c7e32722d97">O_NONBLOCK</a></div><div class="ttdeci">constexpr int O_NONBLOCK</div><div class="ttdef"><b>Definition:</b> open.hpp:31</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_html_a73da9d49515dfff761c4887c3d6032c0"><div class="ttname"><a href="namespaceos.html#a73da9d49515dfff761c4887c3d6032c0">os::write</a></div><div class="ttdeci">ssize_t write(const int_fd &fd, const void *data, size_t size)</div><div class="ttdef"><b>Definition:</b> write.hpp:26</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="windows_2open_8hpp_html_a90f563755a3487471e47a64aa01daf2c"><div class="ttname"><a href="windows_2open_8hpp.html#a90f563755a3487471e47a64aa01daf2c">O_SYNC</a></div><div class="ttdeci">constexpr int O_SYNC</div><div class="ttdef"><b>Definition:</b> open.hpp:37</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2os_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2os_8hpp_source.html b/content/api/latest/c++/windows_2os_8hpp_source.html
index 467980a..deebe15 100644
--- a/content/api/latest/c++/windows_2os_8hpp_source.html
+++ b/content/api/latest/c++/windows_2os_8hpp_source.html
@@ -56,7 +56,7 @@
<div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a96066cfc01f1f62fc25b56f6915800eb"><div class="ttname"><a href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">os::stat::uid</a></div><div class="ttdeci">Try< uid_t > uid(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:213</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< pid_t ></a></div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="getenv_8hpp_html"><div class="ttname"><a href="getenv_8hpp.html">getenv.hpp</a></div></div>
@@ -75,7 +75,7 @@
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_afa288d86b242c3005425a9c0f1682544"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afa288d86b242c3005425a9c0f1682544">WNOHANG</a></div><div class="ttdeci">#define WNOHANG</div><div class="ttdef"><b>Definition:</b> windows.hpp:382</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
<div class="ttc" id="classDuration_html_a05ddd6a9f21b82dba6313f81418f53d2"><div class="ttname"><a href="classDuration.html#a05ddd6a9f21b82dba6313f81418f53d2">Duration::ms</a></div><div class="ttdeci">double ms() const </div><div class="ttdef"><b>Definition:</b> duration.hpp:48</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2os_2read_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">read.hpp</a></div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespacepath_html_aa86b16a2171cec90bb3337930513ef0f"><div class="ttname"><a href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a></div><div class="ttdeci">std::string join(const std::string &path1, const std::string &path2, const char _separator=os::PATH_SEPARATOR)</div><div class="ttdef"><b>Definition:</b> path.hpp:56</div></div>
[48/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
Updated the website built from mesos SHA: c020a13.
Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/d7774475
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/d7774475
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/d7774475
Branch: refs/heads/asf-site
Commit: d7774475cdbfd83e3af60a47ba57a54cb1c66b5f
Parents: f81da9d
Author: jenkins <bu...@apache.org>
Authored: Fri May 18 09:29:40 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Fri May 18 09:29:40 2018 +0000
----------------------------------------------------------------------
...ess_2include_2process_2http_8hpp_source.html | 2 +-
..._2include_2process_2network_8hpp_source.html | 2 +-
...nclude_2stout_2flags_2flags_8hpp_source.html | 2 +-
...nclude_2stout_2flags_2parse_8hpp_source.html | 2 +-
..._2stout_2include_2stout_2ip_8hpp_source.html | 2 +-
...2stout_2include_2stout_2net_8hpp_source.html | 4 +-
..._2include_2stout_2os_2linux_8hpp_source.html | 4 +-
...t_2include_2stout_2os_2read_8hpp_source.html | 6 +-
..._2include_2stout_2posix_2fs_8hpp_source.html | 2 +-
..._2include_2stout_2posix_2ip_8hpp_source.html | 4 +-
...2include_2stout_2posix_2net_8hpp_source.html | 4 +-
...t_2include_2stout_2protobuf_8hpp_source.html | 2 +-
...t_2include_2stout_2recordio_8hpp_source.html | 2 +-
...ut_2include_2stout_2version_8hpp_source.html | 2 +-
...include_2stout_2windows_2fs_8hpp_source.html | 2 +-
...include_2stout_2windows_2ip_8hpp_source.html | 2 +-
...nclude_2stout_2windows_2net_8hpp_source.html | 2 +-
content/api/latest/c++/Nodes.xml | 7 +-
content/api/latest/c++/Tokens.xml | 12 +-
content/api/latest/c++/access_8hpp_source.html | 2 +-
content/api/latest/c++/address_8hpp_source.html | 2 +-
content/api/latest/c++/base64_8hpp_source.html | 2 +-
content/api/latest/c++/bytes_8hpp_source.html | 2 +-
content/api/latest/c++/chown_8hpp_source.html | 4 +-
.../api/latest/c++/credentials_8hpp_source.html | 2 +-
.../api/latest/c++/duration_8hpp_source.html | 2 +-
content/api/latest/c++/elf_8hpp_source.html | 2 +-
content/api/latest/c++/error_8hpp_source.html | 2 +-
content/api/latest/c++/errorbase_8hpp.html | 44 ++++-
.../api/latest/c++/errorbase_8hpp_source.html | 24 +--
content/api/latest/c++/fetch_8hpp_source.html | 2 +-
content/api/latest/c++/files_8hpp_source.html | 2 +-
.../c++/filter_2internal_8hpp_source.html | 2 +-
content/api/latest/c++/find_8hpp_source.html | 2 +-
content/api/latest/c++/format_8hpp_source.html | 2 +-
content/api/latest/c++/freebsd_8hpp_source.html | 4 +-
content/api/latest/c++/future_8hpp_source.html | 2 +-
content/api/latest/c++/globals_func.html | 10 +-
content/api/latest/c++/globals_o.html | 10 +-
content/api/latest/c++/gzip_8hpp_source.html | 6 +-
.../c++/http__connection_8hpp_source.html | 2 +-
content/api/latest/c++/index.hhc | 5 +-
content/api/latest/c++/index.hhk | 182 +++++++++----------
.../api/latest/c++/internal_8hpp_source.html | 2 +-
content/api/latest/c++/json_8hpp_source.html | 2 +-
content/api/latest/c++/jwt_8hpp_source.html | 4 +-
.../latest/c++/lib__logrotate_8hpp_source.html | 2 +-
...ss_2include_2process_2check_8hpp_source.html | 2 +-
...s_2include_2process_2socket_8hpp_source.html | 2 +-
...nclude_2process_2ssl_2gtest_8hpp_source.html | 2 +-
...process_2windows_2jobobject_8hpp_source.html | 2 +-
.../latest/c++/link_2internal_8hpp_source.html | 4 +-
.../api/latest/c++/logrotate_8hpp_source.html | 2 +-
content/api/latest/c++/mac_8hpp_source.html | 2 +-
.../c++/memory__profiler_8hpp_source.html | 2 +-
.../latest/c++/module_2manager_8hpp_source.html | 2 +-
.../api/latest/c++/net__cls_8hpp_source.html | 2 +-
content/api/latest/c++/numify_8hpp_source.html | 2 +-
content/api/latest/c++/os_8hpp_source.html | 2 +-
content/api/latest/c++/osx_8hpp_source.html | 4 +-
.../api/latest/c++/permissions_8hpp_source.html | 2 +-
.../latest/c++/posix_2bootid_8hpp_source.html | 2 +-
.../latest/c++/posix_2chdir_8hpp_source.html | 2 +-
.../latest/c++/posix_2chroot_8hpp_source.html | 2 +-
.../latest/c++/posix_2close_8hpp_source.html | 2 +-
.../latest/c++/posix_2copyfile_8hpp_source.html | 4 +-
.../api/latest/c++/posix_2dup_8hpp_source.html | 2 +-
.../c++/posix_2dynamiclibrary_8hpp_source.html | 2 +-
.../latest/c++/posix_2fcntl_8hpp_source.html | 2 +-
.../api/latest/c++/posix_2fork_8hpp_source.html | 4 +-
.../latest/c++/posix_2fsync_8hpp_source.html | 2 +-
.../c++/posix_2ftruncate_8hpp_source.html | 2 +-
.../latest/c++/posix_2killtree_8hpp_source.html | 2 +-
.../api/latest/c++/posix_2ls_8hpp_source.html | 4 +-
.../latest/c++/posix_2lseek_8hpp_source.html | 2 +-
.../api/latest/c++/posix_2mac_8hpp_source.html | 4 +-
.../latest/c++/posix_2mkdir_8hpp_source.html | 2 +-
.../latest/c++/posix_2mkdtemp_8hpp_source.html | 2 +-
.../latest/c++/posix_2mktemp_8hpp_source.html | 2 +-
.../api/latest/c++/posix_2open_8hpp_source.html | 2 +-
.../api/latest/c++/posix_2os_8hpp_source.html | 4 +-
.../api/latest/c++/posix_2pipe_8hpp_source.html | 2 +-
.../latest/c++/posix_2realpath_8hpp_source.html | 2 +-
.../latest/c++/posix_2rename_8hpp_source.html | 2 +-
.../api/latest/c++/posix_2rm_8hpp_source.html | 2 +-
.../latest/c++/posix_2rmdir_8hpp_source.html | 4 +-
.../latest/c++/posix_2shell_8hpp_source.html | 2 +-
.../api/latest/c++/posix_2stat_8hpp_source.html | 4 +-
.../api/latest/c++/posix_2su_8hpp_source.html | 4 +-
.../latest/c++/posix_2xattr_8hpp_source.html | 2 +-
content/api/latest/c++/proc_8hpp_source.html | 2 +-
content/api/latest/c++/pstree_8hpp_source.html | 2 +-
.../c++/queueing_2internal_8hpp_source.html | 2 +-
.../latest/c++/reparsepoint_8hpp_source.html | 2 +-
.../api/latest/c++/resources_8hpp_source.html | 2 +-
content/api/latest/c++/result_8hpp_source.html | 4 +-
content/api/latest/c++/sched_8hpp_source.html | 4 +-
.../c++/src_2common_2http_8hpp_source.html | 2 +-
.../c++/src_2common_2parse_8hpp_source.html | 2 +-
.../c++/src_2common_2recordio_8hpp_source.html | 2 +-
.../c++/src_2common_2values_8hpp_source.html | 2 +-
.../c++/src_2messages_2flags_8hpp_source.html | 2 +-
...olators_2network_2cni_2spec_8hpp_source.html | 4 +-
.../c++/src_2slave_2state_8hpp_source.html | 2 +-
.../c++/src_2tests_2module_8hpp_source.html | 2 +-
.../latest/c++/src_2v1_2parse_8hpp_source.html | 2 +-
.../latest/c++/state__machine_8hpp_source.html | 2 +-
...s__update__manager__process_8hpp_source.html | 2 +-
...tout_2include_2stout_2check_8hpp_source.html | 4 +-
.../c++/stout_2include_2stout_2gtest_8hpp.html | 12 +-
...tout_2include_2stout_2gtest_8hpp_source.html | 2 +-
...e_2stout_2os_2posix_2socket_8hpp_source.html | 2 +-
...out_2os_2windows_2jobobject_8hpp_source.html | 2 +-
.../c++/subprocess__posix_8hpp_source.html | 4 +-
.../c++/subprocess__windows_8hpp_source.html | 2 +-
content/api/latest/c++/sunos_8hpp_source.html | 4 +-
content/api/latest/c++/svn_8hpp_source.html | 2 +-
content/api/latest/c++/symlink_8hpp_source.html | 2 +-
content/api/latest/c++/sysctl_8hpp_source.html | 4 +-
content/api/latest/c++/touch_8hpp_source.html | 2 +-
content/api/latest/c++/try_8hpp_source.html | 4 +-
...uri__disk__profile__adaptor_8hpp_source.html | 2 +-
content/api/latest/c++/url_8hpp_source.html | 2 +-
content/api/latest/c++/utime_8hpp_source.html | 2 +-
content/api/latest/c++/uuid_8hpp_source.html | 2 +-
.../latest/c++/v1_2resources_8hpp_source.html | 2 +-
.../c++/windows_2copyfile_8hpp_source.html | 2 +-
.../windows_2dynamiclibrary_8hpp_source.html | 2 +-
.../latest/c++/windows_2error_8hpp_source.html | 4 +-
.../c++/windows_2killtree_8hpp_source.html | 2 +-
.../latest/c++/windows_2mac_8hpp_source.html | 2 +-
.../c++/windows_2mkdtemp_8hpp_source.html | 2 +-
.../latest/c++/windows_2mktemp_8hpp_source.html | 2 +-
.../latest/c++/windows_2open_8hpp_source.html | 2 +-
.../api/latest/c++/windows_2os_8hpp_source.html | 4 +-
.../c++/windows_2realpath_8hpp_source.html | 2 +-
.../api/latest/c++/windows_2rm_8hpp_source.html | 2 +-
.../latest/c++/windows_2rmdir_8hpp_source.html | 2 +-
.../latest/c++/windows_2shell_8hpp_source.html | 2 +-
.../latest/c++/windows_2stat_8hpp_source.html | 2 +-
.../api/latest/c++/windows_2su_8hpp_source.html | 2 +-
content/api/latest/c++/write_8hpp_source.html | 4 +-
142 files changed, 348 insertions(+), 288 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2http_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2http_8hpp_source.html b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2http_8hpp_source.html
index 62a55a6..e125887 100644
--- a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2http_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2http_8hpp_source.html
@@ -67,7 +67,7 @@
<div class="ttc" id="structprocess_1_1http_1_1Status_html_aa8ef81ebd5c8e73eff805b126abcfde2"><div class="ttname"><a href="structprocess_1_1http_1_1Status.html#aa8ef81ebd5c8e73eff805b126abcfde2">process::http::Status::MOVED_PERMANENTLY</a></div><div class="ttdeci">static const uint16_t MOVED_PERMANENTLY</div><div class="ttdef"><b>Definition:</b> http.hpp:226</div></div>
<div class="ttc" id="structprocess_1_1http_1_1Status_html_a84baf6a6f631e460bb85bea1d546bd97"><div class="ttname"><a href="structprocess_1_1http_1_1Status.html#a84baf6a6f631e460bb85bea1d546bd97">process::http::Status::GONE</a></div><div class="ttdeci">static const uint16_t GONE</div><div class="ttdef"><b>Definition:</b> http.hpp:242</div></div>
<div class="ttc" id="structprocess_1_1http_1_1Status_html_addffbea97c092bf92955b7f513208ceb"><div class="ttname"><a href="structprocess_1_1http_1_1Status.html#addffbea97c092bf92955b7f513208ceb">process::http::Status::UNSUPPORTED_MEDIA_TYPE</a></div><div class="ttdeci">static const uint16_t UNSUPPORTED_MEDIA_TYPE</div><div class="ttdef"><b>Definition:</b> http.hpp:247</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="structprocess_1_1http_1_1Server_1_1CreateOptions_html"><div class="ttname"><a href="structprocess_1_1http_1_1Server_1_1CreateOptions.html">process::http::Server::CreateOptions</a></div><div class="ttdef"><b>Definition:</b> http.hpp:1048</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="namespaceprocess_1_1http_html_acc0a9c62d4bef93195e93af072f0cda5a293c9ea246ff9985dc6f62a650f78986"><div class="ttname"><a href="namespaceprocess_1_1http.html#acc0a9c62d4bef93195e93af072f0cda5a293c9ea246ff9985dc6f62a650f78986">process::http::Scheme::HTTP</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2network_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2network_8hpp_source.html b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2network_8hpp_source.html
index 1b3acd9..9e8821c 100644
--- a/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2network_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2libprocess_2include_2process_2network_8hpp_source.html
@@ -59,7 +59,7 @@
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceprocess_1_1network_html_a1987d4376ac5e2f04ad72e6c84c7569c"><div class="ttname"><a href="namespaceprocess_1_1network.html#a1987d4376ac5e2f04ad72e6c84c7569c">process::network::address</a></div><div class="ttdeci">Try< Address > address(int_fd s)</div><div class="ttdoc">Returns the Address with the assigned ip and assigned port. </div><div class="ttdef"><b>Definition:</b> network.hpp:79</div></div>
<div class="ttc" id="classprocess_1_1network_1_1Address_html"><div class="ttname"><a href="classprocess_1_1network_1_1Address.html">process::network::Address</a></div><div class="ttdef"><b>Definition:</b> address.hpp:276</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespacenet_html_a5ba505f2b438dcc42c59c5ba5b94f38c"><div class="ttname"><a href="namespacenet.html#a5ba505f2b438dcc42c59c5ba5b94f38c">net::bind</a></div><div class="ttdeci">int bind(const int_fd &fd, const sockaddr *addr, socklen_t addrlen)</div><div class="ttdef"><b>Definition:</b> socket.hpp:143</div></div>
<div class="ttc" id="classprocess_1_1network_1_1Address_html_a0008f4285e960406a0e2e6ec96f875ad"><div class="ttname"><a href="classprocess_1_1network_1_1Address.html#a0008f4285e960406a0e2e6ec96f875ad">process::network::Address::size</a></div><div class="ttdeci">size_t size() const </div><div class="ttdef"><b>Definition:</b> address.hpp:359</div></div>
<div class="ttc" id="stout_2include_2stout_2os_2socket_8hpp_html"><div class="ttname"><a href="stout_2include_2stout_2os_2socket_8hpp.html">socket.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2flags_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2flags_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2flags_8hpp_source.html
index 94c6bb0..80ec291 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2flags_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2flags_8hpp_source.html
@@ -56,7 +56,7 @@
<div class="ttc" id="classflags_1_1FlagsBase_html_a56da290b1a3b00816c11100aaed3a0cc"><div class="ttname"><a href="classflags_1_1FlagsBase.html#a56da290b1a3b00816c11100aaed3a0cc">flags::FlagsBase::add</a></div><div class="ttdeci">void add(Option< T > Flags::*option, const Name &name, const Option< Name > &alias, const std::string &help)</div><div class="ttdef"><b>Definition:</b> flags.hpp:280</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="namespaceappc_1_1spec_html_a1f003511d7ad7c4792223d0b11b60f62"><div class="ttname"><a href="namespaceappc_1_1spec.html#a1f003511d7ad7c4792223d0b11b60f62">appc::spec::validate</a></div><div class="ttdeci">Option< Error > validate(const std::string &imageDir)</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="structflags_1_1Warnings_html_adc8532ecf5745eac3fe7d08f48ee5399"><div class="ttname"><a href="structflags_1_1Warnings.html#adc8532ecf5745eac3fe7d08f48ee5399">flags::Warnings::warnings</a></div><div class="ttdeci">std::vector< Warning > warnings</div><div class="ttdef"><b>Definition:</b> flag.hpp:73</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_source.html
index dd61483..574ce4e 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</spa
n> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">
12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_FLAGS_PARSE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_FLAGS_PARSE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sstream></span> <span class="comment">// For istringstream.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.h
pp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2ip_8hpp.html">stout/ip.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp<
/a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="flag_8hpp.html">stout/flags/flag.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">stout/os/read.hpp</a>></span><
/div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespaceflags.html">flags</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceflags.html#a62b1974db70a09bd57b28b2584070e34"> 35</a></span> <a class="code" href="classTry.html">Try<T></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l0
0037"></a><span class="lineno"> 37</span>  T t;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::istringstream in(value);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  in >> t;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span> (in && in.eof()) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> t;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="string
literal">"Failed to convert into required type"</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceflags.html#ae5defbac382192bb7c5aee24c6d557df"> 50</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span cl
ass="lineno"> 52</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespaceflags.html#ae6139ffcb87493744c3782413fc9ad03"> 57</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<bool></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><s
pan class="lineno"> 59</span>  <span class="keywordflow">if</span> (value == <span class="stringliteral">"true"</span> || value == <span class="stringliteral">"1"</span>) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value == <span class="stringliteral">"false"</span> || value == <span class="stringliteral">"0"</span>) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class
="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Expecting a boolean (e.g., true or false)"</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespaceflags.html#af63bdf3b576516d5bf237fc8a156c8f0"> 69</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Duration></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00070
"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="classDuration.html#a90e922f926992750ed1f3ffc90b27c8b">Duration::parse</a>(value);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespaceflags.html#aa0aeb9a17a02d82658fc629fd1185d6e"> 76</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">par
se</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class="code" href="classBytes.html#a7cfe284176d1712aea563e5ddb590b30">Bytes::parse</a>(value);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="namespaceflags.html#a37aff6119e5c4b6f1aab8d93522a3921"> 83</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try
<net::IP></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classnet_1_1IP.html#a29469a2770ed1c02f447470712158d0e">net::IP::parse</a>(value);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="namespaceflags.html#a6f0ba6de4c42bafc28e6a9a463
1b092f"> 90</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<net::IPv4></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <a class="code" href="classnet_1_1IPv4.html#a6ec1fda0ad381dbd68df36239edd1ecc">net::IPv4::parse</a>(value);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">template</span> <></div><div class="line"
><a name="l00097"></a><span class="lineno"><a class="line" href="namespaceflags.html#a47592f2456c0bfc804e39c4c357c3ab8"> 97</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<net::IPv6></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <a class="code" href="classnet_1_1IPv6.html#ab0224366d3e4d4dac3755b071660c072">net::IPv6::parse</a>(value);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103">
</a><span class="lineno"> 103</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="namespaceflags.html#abf3ec8fe3d745a9be53c67b847c5e130"> 104</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// A value that already starts with 'file://' will properly be</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <spa
n class="comment">// loaded from the file and put into 'value' but if it starts with</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// '/' we need to explicitly handle it for backwards compatibility</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// reasons (because we used to handle it before we introduced the</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// 'fetch' mechanism for flags that first fetches the data from URIs</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// such as 'file://').</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">//</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</spa
n>  <span class="comment">// NOTE: Because this code is deprecated, it is not supported on Windows.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(value, <span class="stringliteral">"/"</span>)) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  LOG(WARNING) << <span class="stringliteral">"Specifying an absolute filename to read a command line "</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="stringliteral">"option out of without using 'file:// is deprecated and "</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="stringliteral">"will be removed in a future release. Sim
ply adding "</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="stringliteral">"'file://' to the beginning of the path should eliminate "</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="stringliteral">"this warning."</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a> = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(value);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span> (read.<a class="code" hr
ef="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Error reading file '"</span> + value + <span class="stringliteral">"': "</span> + read.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> JSON::parse<JSON::Object>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="p
reprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> JSON::parse<JSON::Object>(value);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="namespaceflags.html#adea78d5ed133169a5c51fbd260fc91b1"> 134</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<JSON::Array></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& valu
e)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// A value that already starts with 'file://' will properly be</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// loaded from the file and put into 'value' but if it starts with</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// '/' we need to explicitly handle it for backwards compatibility</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// reasons (because we used to handle it before we introduced the</span></div><div class="line"><a nam
e="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// 'fetch' mechanism for flags that first fetches the data from URIs</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// such as 'file://').</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">//</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// NOTE: Because this code is deprecated, it is not supported on Windows.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(value, <span class="stringliteral">"/"</span>)) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  LOG(WARNING)
<< <span class="stringliteral">"Specifying an absolute filename to read a command line "</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="stringliteral">"option out of without using 'file:// is deprecated and "</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="stringliteral">"will be removed in a future release. Simply adding "</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="stringliteral">"'file://' to the beginning of the path should eliminate "</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="stringliteral">"this warning."</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div
class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a> = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(value);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span> (read.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Error reading file '"</span> + value + <span class="stringliteral">"': "</span> + read.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line
"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> JSON::parse<JSON::Array>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> JSON::parse<JSON::Array>(value);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163">
</a><span class="lineno"> 163</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespaceflags.html#acd8571b3ee50493ed6b4f0a5bd741d1b"> 164</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Path></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> <a class="code" href="classPath.html">Path</a>(value);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169
</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="namespaceflags.html#ad1af85053e102de971aed1b1138619e0"> 171</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SecurePathOrValue></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="structflags_1_1SecurePathOrValue.html">SecurePathOrValue</a> result;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  result.<a class="code" href="structflags_1_1SecurePathOrValue.html#ac8064a96d7a14f4c0bfaf65
4e5d772de">value</a> = value;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(value, <span class="stringliteral">"file://"</span>)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> std::string <a class="code" href="namespacepath.html">path</a> = value.substr(7);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a> = <a class="code" href="namespaceos.html
#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(path);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span> (read.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Error reading file '"</span> + path + <span class="stringliteral">"': "</span> + read.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="line
no"> 185</span>  result.<a class="code" href="structflags_1_1SecurePathOrValue.html#ac8064a96d7a14f4c0bfaf654e5d772de">value</a> = read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  result.<a class="code" href="structflags_1_1SecurePathOrValue.html#a28ba6af3886c2d7b09ffd521ccfb7c15">path</a> = <a class="code" href="classPath.html">Path</a>(path);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a
><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<int_fd></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Looks like "WindowsFD::Type::HANDLE=0000000000000000".</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  std::vector<
;std::string> fd = <a class="code" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::split</a>(value, <span class="stringliteral">"="</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (fd.size() != 2) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Expected to split string into exactly two parts."</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a>(fd[0], <spa
n class="stringliteral">"HANDLE"</span>)) {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classTry.html">Try<HANDLE></a> t = parse<HANDLE>(fd[1]);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(t.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2
f07">int_fd</a>(t.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a>(fd[0], <span class="stringliteral">"SOCKET"</span>)) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="classTry.html">Try<SOCKET></a> t = parse<SOCKET>(fd[1]);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a
>(t.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>(t.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`int_fd` was neither a `HANDLE` nor a `SOCKET`"</span>);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>
60;}</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> } <span class="comment">// namespace flags {</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#endif // __STOUT_FLAGS_PARSE_HPP__</span></div><div class="ttc" id="namespacestrings_html_a04772ad549ec2958e0cd80218c32a865"><div class="ttname"><a href="namespacestrings.html#a04772ad549ec2958e0cd80218c32a865">strings::endsWith</a></div><div class="ttdeci">bool endsWith(const std::string &s, const std::string &suffix)</div><div class="ttdef"><b>Definition:</b> strings.hpp:393</div></div>
<div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2ip_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2ip_8hpp.html">ip.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2ip_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2ip_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2ip_8hpp_source.html
index 249f11f..c594eed 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2ip_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2ip_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="classnet_1_1IPv6_html_aa10eb595a2c9e36a2c40d880dbe851f7"><div class="ttname"><a href="classnet_1_1IPv6.html#aa10eb595a2c9e36a2c40d880dbe851f7">net::IPv6::ANY</a></div><div class="ttdeci">static IPv6 ANY()</div><div class="ttdef"><b>Definition:</b> ip.hpp:386</div></div>
<div class="ttc" id="structstd_1_1hash_3_01net_1_1IP_01_4_html_af873f4d78fd40b8156b8cc657d2d4244"><div class="ttname"><a href="structstd_1_1hash_3_01net_1_1IP_01_4.html#af873f4d78fd40b8156b8cc657d2d4244">std::hash< net::IP >::operator()</a></div><div class="ttdeci">result_type operator()(const argument_type &ip) const </div><div class="ttdef"><b>Definition:</b> ip.hpp:688</div></div>
<div class="ttc" id="classnet_1_1IP_1_1Network_html_a695af4d391431eaf349b81615baf90de"><div class="ttname"><a href="classnet_1_1IP_1_1Network.html#a695af4d391431eaf349b81615baf90de">net::IP::Network::address</a></div><div class="ttdeci">IP address() const </div><div class="ttdef"><b>Definition:</b> ip.hpp:261</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classnet_1_1IPv4_html"><div class="ttname"><a href="classnet_1_1IPv4.html">net::IPv4</a></div><div class="ttdef"><b>Definition:</b> ip.hpp:334</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="classnet_1_1IP_1_1Network_html_a1092241ceaa7c4ec81ac4a170dc5a695"><div class="ttname"><a href="classnet_1_1IP_1_1Network.html#a1092241ceaa7c4ec81ac4a170dc5a695">net::IP::Network::operator!=</a></div><div class="ttdeci">bool operator!=(const Network &that) const </div><div class="ttdef"><b>Definition:</b> ip.hpp:297</div></div>
[45/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2recordio_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2recordio_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2recordio_8hpp_source.html
index edc19cd..fa7145c 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2recordio_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2recordio_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">recordio.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="3rdparty_2stout_2include_2stout_2recordio_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#
160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12
</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_RECORDIO_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_RECORDIO_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span cl
ass="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="numify_8hpp.html">stout/numify.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lin
eno"> 26</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacerecordio.html"> 50</a></span> <span class="keyword">namespace </span><a class="code" href="namespacerecordio.html">recordio</a> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classrecor
dio_1_1Encoder.html"> 57</a></span> <span class="keyword">class </span><a class="code" href="classrecordio_1_1Encoder.html">Encoder</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classrecordio_1_1Encoder.html#a55b8327210168b08ccaf82d1a465037d"> 60</a></span>  <a class="code" href="classrecordio_1_1Encoder.html#a55b8327210168b08ccaf82d1a465037d">Encoder</a>(std::function<std::string(<span class="keyword">const</span> T&)> _serialize)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  : serialize(_serialize) {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="c
lassrecordio_1_1Encoder.html#a1ab4319875f0c4a59fe6c2283777e78c"> 66</a></span>  std::string <a class="code" href="classrecordio_1_1Encoder.html#a1ab4319875f0c4a59fe6c2283777e78c">encode</a>(<span class="keyword">const</span> T& record)<span class="keyword"> const</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::string s = serialize(record);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(s.size()) + <span class="stringliteral">"\n"</span> + s;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line">
<a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::function<std::string(const T&)> serialize;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classrecordio_1_1Decoder.html"> 82</a></span> <span class="keyword">class </span><a class="code" href="classrecordio_1_1Decoder.html">Decoder</a></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><di
v class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classrecordio_1_1Decoder.html#a73e362f6c4c9d24885b5934e8f1932c2"> 85</a></span>  <a class="code" href="classrecordio_1_1Decoder.html#a73e362f6c4c9d24885b5934e8f1932c2">Decoder</a>(std::function<<a class="code" href="classTry.html">Try<T></a>(<span class="keyword">const</span> std::string&)> _deserialize)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  : state(HEADER), <a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>(_deserialize) {}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classrecordio_1_1Decoder.html#ae0bd491d2cd2cd5a3511c9d1462c6ffd"> 100<
/a></span>  <a class="code" href="classTry.html">Try<std::deque<Try<T></a>>> <a class="code" href="classrecordio_1_1Decoder.html#ae0bd491d2cd2cd5a3511c9d1462c6ffd">decode</a>(<span class="keyword">const</span> std::string& data)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (state == FAILED) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Decoder is in a FAILED state"</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>
0; std::deque<Try<T>> records;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">foreach</span> (<span class="keywordtype">char</span> c, data) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (state == HEADER) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// Keep reading until we have the entire header.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (c != <span class="charliteral">'\n'</span>) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  buffer += c;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> 
<span class="keywordflow">continue</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="classTry.html">Try<size_t></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a> = ::numify<size_t>(buffer);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// If we were unable to decode the length header, do not</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// continue decoding since we cannot determine where to</span></div><div class="line"><a name="l00120"></a><span class="lineno">
120</span>  <span class="comment">// pick up the next length header!</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span> (numify.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  state = FAILED;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to decode length '"</span> + buffer + <span class="stringliteral">"': "</span> +</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  numify.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00125"></a><span
class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  length = numify.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  buffer.clear();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  state = RECORD;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// Note that for 0 length records, we immediately decode.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (numify.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5"
>get</a>() <= 0) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  records.push_back(<a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>(buffer));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  state = HEADER;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (state == RECORD) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(length);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  CHECK_LT(buffer.size(), length.get());</div><div class="line
"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  buffer += c;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (buffer.size() == length.get()) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  records.push_back(<a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>(buffer));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  buffer.clear();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  state = HEADER;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><spa
n class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> records;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">enum</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  HEADER,</div><div class="line"><a name="l00157"></a><span cl
ass="lineno"> 157</span>  RECORD,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  FAILED</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } state;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// TODO(bmahler): Avoid string here as it will not free</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// its underlying memory allocation when we clear it.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  std::string buffer;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classOption.html">Option<size_t></a> length;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>
0;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::function<Try<T>(<span class="keyword">const</span> std::string&)> <a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> };</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> } <span class="comment">// namespace recordio {</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#endif // __STOUT_RECORDIO_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="3rdparty_2stout_2include_2stout_2recordio_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#
160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12
</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_RECORDIO_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_RECORDIO_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <deque></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span cl
ass="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="numify_8hpp.html">stout/numify.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lin
eno"> 26</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacerecordio.html"> 50</a></span> <span class="keyword">namespace </span><a class="code" href="namespacerecordio.html">recordio</a> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classrecor
dio_1_1Encoder.html"> 57</a></span> <span class="keyword">class </span><a class="code" href="classrecordio_1_1Encoder.html">Encoder</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="classrecordio_1_1Encoder.html#a55b8327210168b08ccaf82d1a465037d"> 60</a></span>  <a class="code" href="classrecordio_1_1Encoder.html#a55b8327210168b08ccaf82d1a465037d">Encoder</a>(std::function<std::string(<span class="keyword">const</span> T&)> _serialize)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  : serialize(_serialize) {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="c
lassrecordio_1_1Encoder.html#a1ab4319875f0c4a59fe6c2283777e78c"> 66</a></span>  std::string <a class="code" href="classrecordio_1_1Encoder.html#a1ab4319875f0c4a59fe6c2283777e78c">encode</a>(<span class="keyword">const</span> T& record)<span class="keyword"> const</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::string s = serialize(record);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(s.size()) + <span class="stringliteral">"\n"</span> + s;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line">
<a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::function<std::string(const T&)> serialize;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> };</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classrecordio_1_1Decoder.html"> 82</a></span> <span class="keyword">class </span><a class="code" href="classrecordio_1_1Decoder.html">Decoder</a></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><di
v class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classrecordio_1_1Decoder.html#a73e362f6c4c9d24885b5934e8f1932c2"> 85</a></span>  <a class="code" href="classrecordio_1_1Decoder.html#a73e362f6c4c9d24885b5934e8f1932c2">Decoder</a>(std::function<<a class="code" href="classTry.html">Try<T></a>(<span class="keyword">const</span> std::string&)> _deserialize)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  : state(HEADER), <a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>(_deserialize) {}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classrecordio_1_1Decoder.html#ae0bd491d2cd2cd5a3511c9d1462c6ffd"> 100<
/a></span>  <a class="code" href="classTry.html">Try<std::deque<Try<T></a>>> <a class="code" href="classrecordio_1_1Decoder.html#ae0bd491d2cd2cd5a3511c9d1462c6ffd">decode</a>(<span class="keyword">const</span> std::string& data)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (state == FAILED) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Decoder is in a FAILED state"</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>
0; std::deque<Try<T>> records;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">foreach</span> (<span class="keywordtype">char</span> c, data) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (state == HEADER) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// Keep reading until we have the entire header.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span> (c != <span class="charliteral">'\n'</span>) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  buffer += c;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> 
<span class="keywordflow">continue</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="classTry.html">Try<size_t></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a> = ::numify<size_t>(buffer);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// If we were unable to decode the length header, do not</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// continue decoding since we cannot determine where to</span></div><div class="line"><a name="l00120"></a><span class="lineno">
120</span>  <span class="comment">// pick up the next length header!</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span> (numify.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  state = FAILED;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to decode length '"</span> + buffer + <span class="stringliteral">"': "</span> +</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  numify.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00125"></a><span
class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  length = numify.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  buffer.clear();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  state = RECORD;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// Note that for 0 length records, we immediately decode.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span> (numify.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5"
>get</a>() <= 0) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  records.push_back(<a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>(buffer));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  state = HEADER;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (state == RECORD) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(length);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  CHECK_LT(buffer.size(), length.get());</div><div class="line
"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  buffer += c;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (buffer.size() == length.get()) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  records.push_back(<a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>(buffer));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  buffer.clear();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  state = HEADER;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><spa
n class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> records;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">enum</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  HEADER,</div><div class="line"><a name="l00157"></a><span cl
ass="lineno"> 157</span>  RECORD,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  FAILED</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } state;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// TODO(bmahler): Avoid string here as it will not free</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// its underlying memory allocation when we clear it.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  std::string buffer;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classOption.html">Option<size_t></a> length;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>
0;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::function<Try<T>(<span class="keyword">const</span> std::string&)> <a class="code" href="namespacemesos_1_1internal.html#a33f3db27bdd318b29761985fe76e8255">deserialize</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> };</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> } <span class="comment">// namespace recordio {</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#endif // __STOUT_RECORDIO_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< size_t ></a></div></div>
<div class="ttc" id="namespacerecordio_html"><div class="ttname"><a href="namespacerecordio.html">recordio</a></div><div class="ttdoc">Provides facilities for "Record-IO" encoding of data. </div><div class="ttdef"><b>Definition:</b> recordio.hpp:50</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
[12/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/stout_2include_2stout_2os_2posix_2socket_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/stout_2include_2stout_2os_2posix_2socket_8hpp_source.html b/content/api/latest/c++/stout_2include_2stout_2os_2posix_2socket_8hpp_source.html
index f541ad1..12c0dc6 100644
--- a/content/api/latest/c++/stout_2include_2stout_2os_2posix_2socket_8hpp_source.html
+++ b/content/api/latest/c++/stout_2include_2stout_2os_2posix_2socket_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespacenet_html_a6d996e15b39630257af8d8a0379c7f7a"><div class="ttname"><a href="namespacenet.html#a6d996e15b39630257af8d8a0379c7f7a">net::is_inprogress_error</a></div><div class="ttdeci">bool is_inprogress_error(int error)</div><div class="ttdef"><b>Definition:</b> socket.hpp:71</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a953b4d8769906f7afe486c0ee0955fd3"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a953b4d8769906f7afe486c0ee0955fd3">S_ISSOCK</a></div><div class="ttdeci">bool S_ISSOCK(const int mode)</div><div class="ttdef"><b>Definition:</b> windows.hpp:230</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespacenet_html_a5ba505f2b438dcc42c59c5ba5b94f38c"><div class="ttname"><a href="namespacenet.html#a5ba505f2b438dcc42c59c5ba5b94f38c">net::bind</a></div><div class="ttdeci">int bind(const int_fd &fd, const sockaddr *addr, socklen_t addrlen)</div><div class="ttdef"><b>Definition:</b> socket.hpp:143</div></div>
<div class="ttc" id="namespacenet_html_ae830b749f06b2b6d2ed9c42ecb1763d7"><div class="ttname"><a href="namespacenet.html#ae830b749f06b2b6d2ed9c42ecb1763d7">net::accept</a></div><div class="ttdeci">int_fd accept(const int_fd &fd, sockaddr *addr, socklen_t *addrlen)</div><div class="ttdef"><b>Definition:</b> socket.hpp:132</div></div>
<div class="ttc" id="namespacenet_html_a190d273d305decda6696ed04b3adbd59"><div class="ttname"><a href="namespacenet.html#a190d273d305decda6696ed04b3adbd59">net::is_restartable_error</a></div><div class="ttdeci">bool is_restartable_error(int error)</div><div class="ttdef"><b>Definition:</b> socket.hpp:56</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/stout_2include_2stout_2os_2windows_2jobobject_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/stout_2include_2stout_2os_2windows_2jobobject_8hpp_source.html b/content/api/latest/c++/stout_2include_2stout_2os_2windows_2jobobject_8hpp_source.html
index c424067..507968b 100644
--- a/content/api/latest/c++/stout_2include_2stout_2os_2windows_2jobobject_8hpp_source.html
+++ b/content/api/latest/c++/stout_2include_2stout_2os_2windows_2jobobject_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="stout_2include_2stout_2os_2windows_2jobobject_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</spa
n> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">
12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <numeric></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class=
"line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="st
rings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="os_2os_8hpp.html">stout/os/os.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line">
<a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// `name_job` maps a `pid` to a `wstring` name for a job object.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Only named job objects are accessible via `OpenJobObject`.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Thus all our job objects must be named. This is essentially a shim</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// to map the Linux concept of a process tr
ee's root `pid` to a</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// named job object so that the process group can be treated similarly.</span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespaceos.html#a4c477c8086d4b3004c170ee05e5be9bf"> 39</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::wstring></a> <a class="code" href="namespaceos.html#a4c477c8086d4b3004c170ee05e5be9bf">name_job</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="classTry.html">Try<std::string></a> alpha_pid = <a class="code" href="namespacestrings_1_1internal.html#a870e2d
b270d980f83de20525ec414d2a">strings::internal::format</a>(<span class="stringliteral">"MESOS_JOB_%X"</span>, pid);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span> (alpha_pid.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(alpha_pid.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> wide_stringify(alpha_pid.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00046"></a><span class="line
no"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// `open_job` returns a safe shared handle to the named job object `name`.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// `desired_access` is a job object access rights flag.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// `inherit_handles` if true, processes created by this</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// process will inherit the handle. Otherwise, the processes</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// d
o not inherit this handle.</span></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9"> 54</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SharedHandle></a> <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">open_job</a>(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">const</span> DWORD desired_access,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> BOOL inherit_handles,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">const</span> std::wstring& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><d
iv class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classSharedHandle.html">SharedHandle</a> job_handle(</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ::OpenJobObjectW(desired_access, inherit_handles, name.data()),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ::CloseHandle);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (job_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>() == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00065
"></a><span class="lineno"> 65</span>  <span class="stringliteral">"os::open_job: Call to `OpenJobObject` failed for job: "</span> +</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(name));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> job_handle;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="names
paceos.html#af2d9c9abec4485bcb79f5b6486b237d9"> 73</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SharedHandle></a> <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">open_job</a>(</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">const</span> DWORD desired_access, <span class="keyword">const</span> BOOL inherit_handles, <span class="keyword">const</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::wstring></a> <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a> = <a class="code"
href="namespaceos.html#a4c477c8086d4b3004c170ee05e5be9bf">os::name_job</a>(pid);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (name.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(name.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">open_job</a>(desired_access, inherit_handles, name.<a class="code
" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// `create_job` function creates a named job object using `name`.</span></div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespaceos.html#a88a1637a0168d78faad2ac5b82e5cc4d"> 85</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SharedHandle></a> <a class="code" href="namespaceos.html#a88a1637a0168d78faad2ac5b82e5cc4d">create_job</a>(<span class="keyword">const</span> std::wstring& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> {
</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSharedHandle.html">SharedHandle</a> job_handle(</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  ::CreateJobObjectW(</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">nullptr</span>, <span class="comment">// Use a default security descriptor, and</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// the created handle cannot be inherited.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  name.data()), <span class="comment">// The name of the job.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  ::CloseHandle);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</s
pan> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span> (job_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>() == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="stringliteral">"os::create_job: Call to `CreateJobObject` failed for job: "</span> +</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(name));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span
class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> job_handle;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// `get_job_info` gets the job object information for the process group</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// represented by `pid`, assuming it is assigned to a job object. This function</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// will fail otherwise.</span></div><div class="line"><a name="l00107"></a><span class="lin
eno"> 107</span> <span class="comment">//</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/ms684925(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="namespaceos.html#ade6490bdde78aaec7d3ffec9396e1018"> 109</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<JOBOBJECT_BASIC_ACCOUNTING_INFORMATION></a> <a class="code" href="namespaceos.html#ade6490bdde78aaec7d3ffec9396e1018">get_job_info</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classTry.html">Try&
lt;SharedHandle></a> job_handle = <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">os::open_job</a>(JOB_OBJECT_QUERY, <span class="keyword">false</span>, pid);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (job_handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(job_handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  JOBOBJECT_BASIC_ACCOUNTING_INFORMATION info = {};</div><div
class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> BOOL result = ::QueryInformationJobObject(</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  job_handle-><a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  JobObjectBasicAccountingInformation,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  &info,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">sizeof</span>(info),</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</
span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="stringliteral">"os::get_job_info: call to `QueryInformationJobObject` failed"</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> info;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno">
132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">template</span> <<span class="keywordtype">size_t</span> max_p<span class="keywordtype">id</span>s></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="namespaceos.html#a97c21dd769e29b904e192e591ed11096"> 134</a></span> <a class="code" href="classResult.html">Result<std::set<Process></a>> <a class="code" href="namespaceos.html#a97c21dd769e29b904e192e591ed11096">_get_job_processes</a>(<span class="keyword">const</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>& job_handle)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// This is a statically allocated `JOBOBJECT_BASIC_PROCESS_ID_LIST`. We lie to</span></div><div class="line"><a name="l0
0137"></a><span class="lineno"> 137</span>  <span class="comment">// the Windows API and construct our own struct to avoid (a) having to do</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// hairy size calculations and (b) having to allocate dynamically, and then</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// worry about deallocating.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  DWORD NumberOfAssignedProcesses;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  DWORD NumberOfProcessIdsInList;</div><div class="line"><a name="l00144"></a><span class="lineno
"> 144</span>  DWORD ProcessIdList[max_pids];</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  } pid_list;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">const</span> BOOL result = ::QueryInformationJobObject(</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  job_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  JobObjectBasicProcessIdList,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">reinterpret_cast<</span>JOBOBJECT_BASIC_PROCESS_ID_LIST*<span class="keyword">></span>(&pid_list),</div><div class="line"><a name="l00151"></a><span class="linen
o"> 151</span>  <span class="keyword">sizeof</span>(pid_list),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// `ERROR_MORE_DATA` indicates we need a larger `max_pids`.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span> (result == FALSE && ::GetLastError() == ERROR_MORE_DATA) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <
/div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="stringliteral">"os::_get_job_processes: call to `QueryInformationJobObject` failed"</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  std::set<Process> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <spa
n class="keywordflow">for</span> (DWORD i = 0; i < pid_list.NumberOfProcessIdsInList; ++i) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceprocess.html">process</a> = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(pid_list.ProcessIdList[i]);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (process.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  processes.insert(process.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>());</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lin
eno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="namespaceos.html#a7361a49972acf9a2c28361a46199f484"> 176</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<Process></a>> <a class="code" href="namespaceos.html#a7361a49972acf9a2c28361a46199f484">get_job_processes</a>(<a class="code" href="3rdparty_2stout_2include_2st
out_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// TODO(andschwa): Overload open_job to use pid.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> job_handle = <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">os::open_job</a>(JOB_OBJECT_QUERY, <span class="keyword">false</span>, pid);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span> (job_handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <a class="code
" href="classError.html">Error</a>(job_handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// Try to enumerate the processes with three sizes: 32, 1K, and 32K.</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classResult.html">Result<std::set<Process></a>> result =</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  os::_get_job_processes<32>(job_handle.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00188
"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (result.isError()) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(result.error());</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (result.isSome()) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> result.get();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  result = os::_get_job_processes<32 * 32>(job_handle.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b0
07be5">get</a>());</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span> (result.isError()) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(result.error());</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (result.isSome()) {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> result.get();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  result = os::_get_job_processes<32 * 32 * 32>(job_handle.<a
class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (result.isError()) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(result.error());</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (result.isSome()) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> result.get();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <sp
an class="comment">// If it was bigger than 32K, something else has gone wrong.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"os::get_job_processes: failed to get processes"</span>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="namespaceos.html#a2719d5e9978531adac530780f6a97cf2"> 214</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespaceos.html#a2719d5e9
978531adac530780f6a97cf2">get_job_mem</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::set<Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a> = <a class="code" href="namespaceos.html#a7361a49972acf9a2c28361a46199f484">os::get_job_processes</a>(pid);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <a class
="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> std::accumulate(</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  processes->cbegin(),</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  processes->cend(),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classBytes.html">Bytes</a>(0),</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  [](<span class="keyword">const</span> <a class="code" href="classBytes.html">Bytes</a>& b
ytes, <span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceprocess.html">process</a>.rss.isNone()) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> bytes;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> bytes + <a class="code" href="namespaceprocess.html">process</a>.rss.get();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>
  });</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment">// `set_job_kill_on_close_limit` causes the job object to terminate all</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// processes assigned to it when the last handle to the job object is closed.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// This can be used to limit the lifetime of the process group represented by</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// the job object. Without this limit set, the processes wi
ll continue to run.</span></div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="namespaceos.html#a580730039534bf4757e3e8b0e1e3db10"> 239</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a580730039534bf4757e3e8b0e1e3db10">set_job_kill_on_close_limit</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> job_handle =</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">os::open_job</a>(JOB_OBJECT_SET_ATTRIBUTES, <span class="keyword">false</sp
an>, pid);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span> (job_handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(job_handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  JOBOBJECT_EXTENDED_LIMIT_INFORMATION info = {};</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  info.BasicLimitInfor
mation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> BOOL result = ::SetInformationJobObject(</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  job_handle-><a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  JobObjectExtendedLimitInformation,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  &info,</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">sizeof</span>(info));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span cla
ss="lineno"> 257</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">"os::set_job_kill_on_close_limit: call to `SetInformationJobObject` "</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="stringliteral">"failed"</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div cl
ass="line"><a name="l00264"></a><span class="lineno"> 264</span> }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="comment">// `set_job_cpu_limit` sets a CPU limit for the process represented by</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="comment">// `pid`, assuming it is assigned to a job object. This function will fail</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="comment">// otherwise. This limit is a hard cap enforced by the OS.</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment">//</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="comm
ent">// https://msdn.microsoft.com/en-us/library/windows/desktop/hh448384(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="namespaceos.html#a66d4371272f7c8f52ffb4f440c5a3762"> 272</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a66d4371272f7c8f52ffb4f440c5a3762">set_job_cpu_limit</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, <span class="keywordtype">double</span> <a class="code" href="namespaceos.html#afd08813156fea899c86b340d9767a8cd">cpus</a>)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  JOBOBJECT_CPU_RATE_CONTROL_INFORMATION control_info = {};</div><div class="line"><a name="l00275">
</a><span class="lineno"> 275</span>  control_info.ControlFlags =</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  JOB_OBJECT_CPU_RATE_CONTROL_ENABLE | JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// This `CpuRate` is the number of cycles per 10,000 cycles, or a percentage</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// times 100, e.g. 20% yields 20 * 100 = 2,000. However, the `cpus` argument</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// represents 1 CPU core with `1.0`, so a 100% CPU limit on a quad-core</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">//
machine would be `4.0 cpus`. Thus a mapping of `cpus` to `CpuRate` is</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// `(cpus / os::cpus()) * 100 * 100`, or the requested `cpus` divided by the</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// number of CPUs to obtain a fractional representation, multiplied by 100 to</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// make it a percentage, multiplied again by 100 to become a `CpuRate`.</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">//</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// Mathematically, we're normalizing the requested CPUS to a range</span></div><div class="line"><a name="l00287"></a><span
class="lineno"> 287</span>  <span class="comment">// of [1, 10000] cycles. However, because the input is not</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// sanitized, we have to handle the edge case of the ratio being</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// greater than 1. So we take the `min(max(ratio * 10000, 1),</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// 10000)`. We don't consider going out of bounds an error because</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// CPU limitations are inherently imprecise.</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">const</span> <span class="keywordtype">long</span> total_cpus = <a
class="code" href="namespaceos.html#afd08813156fea899c86b340d9767a8cd">os::cpus</a>().get(); <span class="comment">// This doesn't fail on Windows.</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// This must be constrained. We don't care about perfect precision.</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">const</span> <span class="keywordtype">long</span> cycles = <span class="keyword">static_cast<</span><span class="keywordtype">long</span><span class="keyword">></span>((cpus / total_cpus) * 10000L);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">const</span> <span class="keywordtype">long</span> cpu_rate = <a class="code" href="option_8hpp.html#a78407a45187058b9b4ef2042accb9bc4">std::min</a>(<a class="code" href="option_8hpp.html#ac4b53d77033a5d2405ef12ceb3dc6498">std::max<
/a>(cycles, 1L), 10000L);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  control_info.CpuRate = <span class="keyword">static_cast<</span>DWORD<span class="keyword">></span>(cpu_rate);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> job_handle =</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">os::open_job</a>(JOB_OBJECT_SET_ATTRIBUTES, <span class="keyword">false</span>, pid);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span> (job_handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> <a class="c
ode" href="classError.html">Error</a>(job_handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">const</span> BOOL result = ::SetInformationJobObject(</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  job_handle-><a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  JobObjectCpuRateControlInformation,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  &control_info,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span c
lass="keyword">sizeof</span>(control_info));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="stringliteral">"os::set_job_cpu_limit: call to `SetInformationJobObject` failed"</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00314"></a><span class="lineno
"> 314</span> }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="comment">// `set_job_mem_limit` sets a memory limit for the process represented by</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="comment">// `pid`, assuming it is assigned to a job object. This function will fail</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="comment">// otherwise. This limit is a hard cap enforced by the OS.</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="comment">//</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="comment">// https://msdn.microsoft.com/en-us/library
/windows/desktop/ms684156(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="namespaceos.html#a24a3f6dbfa918c7ac934a2323a824eb4"> 322</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a24a3f6dbfa918c7ac934a2323a824eb4">set_job_mem_limit</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, <a class="code" href="classBytes.html">Bytes</a> limit)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  JOBOBJECT_EXTENDED_LIMIT_INFORMATION info = {};</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  info.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_JOB_MEMORY;</div><div cl
ass="line"><a name="l00326"></a><span class="lineno"> 326</span>  info.JobMemoryLimit = limit.<a class="code" href="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c">bytes</a>();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> job_handle =</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">os::open_job</a>(JOB_OBJECT_SET_ATTRIBUTES, <span class="keyword">false</span>, pid);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (job_handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span cl
ass="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(job_handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">const</span> BOOL result = ::SetInformationJobObject(</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  job_handle-><a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  JobObjectExtendedLimitInformation,</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  &info,</div><div class="line"><a name="l00338"></a><span class="linen
o"> 338</span>  <span class="keyword">sizeof</span>(info));</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="stringliteral">"os::set_job_mem_limit: call to `SetInformationJobObject` failed"</span>);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l0034
5"></a><span class="lineno"> 345</span> }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment">// `assign_job` assigns a process with `pid` to the job object `job_handle`.</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment">// Every process started by the `pid` process using `CreateProcess`</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="comment">// will also be owned by the job object.</span></div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="namespaceos.html#a706dc9d1287978f358a9a23b77037fb0"> 351</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a
class="code" href="namespaceos.html#a706dc9d1287978f358a9a23b77037fb0">assign_job</a>(<a class="code" href="classSharedHandle.html">SharedHandle</a> job_handle, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="comment">// Get process handle for `pid`.</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="classSharedHandle.html">SharedHandle</a> process_handle(</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  ::OpenProcess(</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="comment">// Required access rights to assign to a Job Object.</span></div><div class="line"><a name="l0035
7"></a><span class="lineno"> 357</span>  PROCESS_SET_QUOTA | PROCESS_TERMINATE,</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keyword">false</span>, <span class="comment">// Don't inherit handle.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  pid),</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  ::CloseHandle);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span> (process_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>() == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <a class="code" href="c
lassWindowsError.html">WindowsError</a>(<span class="stringliteral">"os::assign_job: Call to `OpenProcess` failed"</span>);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">const</span> BOOL result = ::AssignProcessToJobObject(</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  job_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), process_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span> (result == FA
LSE) {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="stringliteral">"os::assign_job: Call to `AssignProcessToJobObject` failed"</span>);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  };</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&
#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="comment">// The `kill_job` function wraps the Windows sytem call `TerminateJobObject`</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="comment">// for the job object `job_handle`. This will call `TerminateProcess`</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="comment">// for every associated child process.</span></div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="namespaceos.html#a8181969d159a69d91d1e265f1bb1eddc"> 381</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a8181969d159a69d91d1e265f1bb1eddc">kill_job</a>(<a class="code" href="classSharedHandle.html">SharedHandle</a> job_handle)</div><div class="line"><a name="l00382"></a><span
class="lineno"> 382</span> {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">const</span> BOOL result = ::TerminateJobObject(</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  job_handle.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">// The exit code to be used by all processes in the job object.</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  1);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordf
low">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"os::kill_job: Call to `TerminateJobObject` failed"</span>);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&
#160;<span class="preprocessor">#endif // __STOUT_WINDOWS_JOBOBJECT_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classSharedHandle_html_a800385e17e17cb826147968e748fd8fa"><div class="ttname"><a href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">SharedHandle::get_handle</a></div><div class="ttdeci">HANDLE get_handle() const </div><div class="ttdef"><b>Definition:</b> windows.hpp:90</div></div>
<div class="ttc" id="classSharedHandle_html"><div class="ttname"><a href="classSharedHandle.html">SharedHandle</a></div><div class="ttdef"><b>Definition:</b> windows.hpp:72</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/subprocess__posix_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/subprocess__posix_8hpp_source.html b/content/api/latest/c++/subprocess__posix_8hpp_source.html
index 736631c..ca38030 100644
--- a/content/api/latest/c++/subprocess__posix_8hpp_source.html
+++ b/content/api/latest/c++/subprocess__posix_8hpp_source.html
@@ -56,7 +56,7 @@
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a894c4d58faeee7675b9e7e8244de1386"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a></div><div class="ttdeci">SSIZE_T ssize_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:186</div></div>
<div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="namespacens_html_a98bf4d9e11d546326250997a6493f835"><div class="ttname"><a href="namespacens.html#a98bf4d9e11d546326250997a6493f835">ns::clone</a></div><div class="ttdeci">Try< pid_t > clone(pid_t target, int nstypes, const lambda::function< int()> &f, int flags)</div><div class="ttdoc">Performs an os::clone after entering a set of namespaces for the specified target process...</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
@@ -74,7 +74,7 @@
<div class="ttc" id="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors_html"><div class="ttname"><a href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">process::Subprocess::IO::OutputFileDescriptors</a></div><div class="ttdoc">For output file descriptors a child writes to the write file descriptor and a parent may read from th...</div><div class="ttdef"><b>Definition:</b> subprocess.hpp:88</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
<div class="ttc" id="namespaceprocess_1_1internal_html_af2f19b6f367cddc0c8283560a9cd9215"><div class="ttname"><a href="namespaceprocess_1_1internal.html#af2f19b6f367cddc0c8283560a9cd9215">process::internal::defaultClone</a></div><div class="ttdeci">pid_t defaultClone(const lambda::function< int()> &func)</div><div class="ttdef"><b>Definition:</b> subprocess_posix.hpp:58</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_ae2fe1725bb5e9823d089c46b9ed5266e"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe1725bb5e9823d089c46b9ed5266e">STDERR_FILENO</a></div><div class="ttdeci">#define STDERR_FILENO</div><div class="ttdef"><b>Definition:</b> windows.hpp:155</div></div>
<div class="ttc" id="stout_2include_2stout_2check_8hpp_html"><div class="ttname"><a href="stout_2include_2stout_2check_8hpp.html">check.hpp</a></div></div>
<div class="ttc" id="namespaceprocess_1_1internal_html_a345a534b82b79bf20333fb6faef43e93"><div class="ttname"><a href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">process::internal::cloexec</a></div><div class="ttdeci">Try< Nothing > cloexec(const InputFileDescriptors &stdinfds, const OutputFileDescriptors &stdoutfds, const OutputFileDescriptors &stderrfds)</div><div class="ttdef"><b>Definition:</b> subprocess_posix.hpp:76</div></div>
[05/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2error_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2error_8hpp_source.html b/content/api/latest/c++/windows_2error_8hpp_source.html
index 75a2357..645caea 100644
--- a/content/api/latest/c++/windows_2error_8hpp_source.html
+++ b/content/api/latest/c++/windows_2error_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">error.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="windows_2error_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><s
pan class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// di
stributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_ERROR_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_WINDOWS_ERROR_HPP__</span></div><div
class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// A useful type that can
be used to represent a Try that has failed. This is a</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// lot like `ErrnoError`, except instead of wrapping an error coming from the C</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// standard libraries, it wraps an error coming from the Windows APIs.</span></div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html"> 28</a></span> <span class="keyword">class </span><a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">public</span>:</div><div class="line"><a
name="l00031"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d"> 31</a></span>  <span class="keyword">const</span> DWORD <a class="code" href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d">code</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html#a73005906bfdea54ae771e9ee2b8b9bf0"> 34</a></span>  <span class="keyword">explicit</span> <a class="code" href="classWindowsErrorBase.html#a73005906bfdea54ae771e9ee2b8b9bf0">WindowsErrorBase</a>(DWORD _code)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  : <a class="code" href="classError.html">Error</a>(get_last_error_as_string(_code)), code(_
code) {}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html#a3d4eef2ab51ef4fc46bb2df7c5880fd8"> 37</a></span>  <a class="code" href="classWindowsErrorBase.html#a3d4eef2ab51ef4fc46bb2df7c5880fd8">WindowsErrorBase</a>(DWORD _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  : <a class="code" href="classError.html">Error</a>(message + <span class="stringliteral">": "</span> + get_last_error_as_string(_code)), code(_code) {}</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">private</span>:</div><div class="line
"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> std::string get_last_error_as_string(DWORD errorCode)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Default if no error.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (errorCode == 0) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> std::string();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DWORD allocate_message_buffer =</div><div class="line"><a name="l00049
"></a><span class="lineno"> 49</span>  FORMAT_MESSAGE_ALLOCATE_BUFFER |</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  FORMAT_MESSAGE_FROM_SYSTEM |</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  FORMAT_MESSAGE_IGNORE_INSERTS;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DWORD default_language = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// This following function `FormatMessage` is a lot like `strerror`, except</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// it pretty-prints errors from the Windows API ins
tead of from the C</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// standard library. Basically, the semantics are: we pass in `errorCode`,</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// and it allocates room for a pretty-printed error message at</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// `message_buffer`, and then dumps said pretty-printed error message at</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// that address, in our `default_language`.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">//</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// The 5th actual parame
ter (namely `(LPWSTR)&message_buffer`), may look</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// strange to readers of this code. It is copied directly out of the</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// documentation[1], and is unfortunately required to get the</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// pretty-printed error message. The short story is:</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">//</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// * The flag `FORMAT_MESSAGE_ALLOCATE_BUFFER` tells `FormatMessage` to</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span cla
ss="comment">// point `message_buffer` (which is an `LPWSTR` a.k.a. `char*`) at a</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// string error message. But, `message_buffer` to point a `char*` at a</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// different place, `FormatMessage` would need the address</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// `&message_buffer` so that it could change where it is pointing.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// * So, to solve this problem, the API writers decided that when you</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// pass that flag in, `FormatMessage` will
treat the 5th parameter not</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// as `LPWSTR` (which is what the type is in the function signagure),</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// but as `LPWSTR*` a.k.a. `char**`, which (assuming you've casted the</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// parameter correctly) allows it to allocate the message on your</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// behalf, and change `message_buffer` to point at this new error</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// string.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</s
pan>  <span class="comment">// * This is why we need this strange cast that you see below.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">//</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Finally, and this is important: it is up to the user to free the memory</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// with `LocalFree`! The line below where we do this comes directly from</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// the documentation as well.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">//</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// [1] https://m
sdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">wchar_t</span> *message_buffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = ::FormatMessageW(</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  allocate_message_buffer,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  errorCode,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  de
fault_language,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  (LPWSTR)&message_buffer, <span class="comment">// See comment above about quirky cast.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  0, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  std::wstring <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>(message_buffer, size);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</s
pan>  <span class="comment">// Required per documentation above.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ::LocalFree(message_buffer);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(message);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classWindowsError.html"> 106</a></span> <span class="keywo
rd">class </span><a class="code" href="classWindowsError.html">WindowsError</a> : <span class="keyword">public</span> <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classWindowsError.html#a1d7a8ec4ccb9e8de1d1174aa39d1e089"> 108</a></span>  <a class="code" href="classWindowsError.html#a1d7a8ec4ccb9e8de1d1174aa39d1e089">WindowsError</a>() : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::GetLastError()) {}</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classWindowsError.html#a82b53dd919106021585a9151cd156604"> 110</a></span>  <span class="keyword">explicit</span> <a class="code" href="classWindow
sError.html#a82b53dd919106021585a9151cd156604">WindowsError</a>(DWORD _code) : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code) {}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classWindowsError.html#a95807a4d4619cb117ead04f3303249d6"> 112</a></span>  <a class="code" href="classWindowsError.html#a95807a4d4619cb117ead04f3303249d6">WindowsError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::GetLastError(), message) {}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="
line" href="classWindowsError.html#ac5e8aefb564070d6bc43ec1b87272095"> 115</a></span>  <a class="code" href="classWindowsError.html#ac5e8aefb564070d6bc43ec1b87272095">WindowsError</a>(DWORD _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code, message) {}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html"> 120</a></span> <span class="keyword">class </span><a class="code" href="classWindowsSocketError.ht
ml">WindowsSocketError</a> : <span class="keyword">public</span> <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html#a27bced956a7f2453b2f8deacf836478e"> 122</a></span>  <a class="code" href="classWindowsSocketError.html#a27bced956a7f2453b2f8deacf836478e">WindowsSocketError</a>() : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::WSAGetLastError()) {}</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html#a4a81a41e85b87bb39141743f6a99b978"> 124</a></span>  <span class="keyword">explicit</span> <a class="code" href="classWindowsSocketError.html#a4a81a41
e85b87bb39141743f6a99b978">WindowsSocketError</a>(DWORD _code) : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code) {}</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html#a5e33cba8ac4e338f4066e7bf7e808f95"> 126</a></span>  <a class="code" href="classWindowsSocketError.html#a5e33cba8ac4e338f4066e7bf7e808f95">WindowsSocketError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::WSAGetLastError(), message) {}</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a
class="line" href="classWindowsSocketError.html#af866e904d4e353613312fc82b24ac5ab"> 129</a></span>  <a class="code" href="classWindowsSocketError.html#af866e904d4e353613312fc82b24ac5ab">WindowsSocketError</a>(DWORD _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code, message) {}</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#endif // __STOUT_WINDOWS_ERROR_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>
Definition:</b> errorbase.hpp:35</div></div>
+<a href="windows_2error_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><s
pan class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// di
stributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_ERROR_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_WINDOWS_ERROR_HPP__</span></div><div
class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// A useful type that can
be used to represent a Try that has failed. This is a</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// lot like `ErrnoError`, except instead of wrapping an error coming from the C</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// standard libraries, it wraps an error coming from the Windows APIs.</span></div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html"> 28</a></span> <span class="keyword">class </span><a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">public</span>:</div><div class="line"><a
name="l00031"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d"> 31</a></span>  <span class="keyword">const</span> DWORD <a class="code" href="classWindowsErrorBase.html#a0901c393db6d19b248f24faeb638275d">code</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html#a73005906bfdea54ae771e9ee2b8b9bf0"> 34</a></span>  <span class="keyword">explicit</span> <a class="code" href="classWindowsErrorBase.html#a73005906bfdea54ae771e9ee2b8b9bf0">WindowsErrorBase</a>(DWORD _code)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  : <a class="code" href="classError.html">Error</a>(get_last_error_as_string(_code)), code(_
code) {}</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classWindowsErrorBase.html#a3d4eef2ab51ef4fc46bb2df7c5880fd8"> 37</a></span>  <a class="code" href="classWindowsErrorBase.html#a3d4eef2ab51ef4fc46bb2df7c5880fd8">WindowsErrorBase</a>(DWORD _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  : <a class="code" href="classError.html">Error</a>(message + <span class="stringliteral">": "</span> + get_last_error_as_string(_code)), code(_code) {}</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">private</span>:</div><div class="line
"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">static</span> std::string get_last_error_as_string(DWORD errorCode)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Default if no error.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (errorCode == 0) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> std::string();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DWORD allocate_message_buffer =</div><div class="line"><a name="l00049
"></a><span class="lineno"> 49</span>  FORMAT_MESSAGE_ALLOCATE_BUFFER |</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  FORMAT_MESSAGE_FROM_SYSTEM |</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  FORMAT_MESSAGE_IGNORE_INSERTS;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DWORD default_language = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// This following function `FormatMessage` is a lot like `strerror`, except</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// it pretty-prints errors from the Windows API ins
tead of from the C</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// standard library. Basically, the semantics are: we pass in `errorCode`,</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// and it allocates room for a pretty-printed error message at</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// `message_buffer`, and then dumps said pretty-printed error message at</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// that address, in our `default_language`.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">//</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// The 5th actual parame
ter (namely `(LPWSTR)&message_buffer`), may look</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// strange to readers of this code. It is copied directly out of the</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// documentation[1], and is unfortunately required to get the</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// pretty-printed error message. The short story is:</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">//</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// * The flag `FORMAT_MESSAGE_ALLOCATE_BUFFER` tells `FormatMessage` to</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span cla
ss="comment">// point `message_buffer` (which is an `LPWSTR` a.k.a. `char*`) at a</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// string error message. But, `message_buffer` to point a `char*` at a</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// different place, `FormatMessage` would need the address</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// `&message_buffer` so that it could change where it is pointing.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// * So, to solve this problem, the API writers decided that when you</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// pass that flag in, `FormatMessage` will
treat the 5th parameter not</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// as `LPWSTR` (which is what the type is in the function signagure),</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// but as `LPWSTR*` a.k.a. `char**`, which (assuming you've casted the</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// parameter correctly) allows it to allocate the message on your</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// behalf, and change `message_buffer` to point at this new error</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// string.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</s
pan>  <span class="comment">// * This is why we need this strange cast that you see below.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">//</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Finally, and this is important: it is up to the user to free the memory</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// with `LocalFree`! The line below where we do this comes directly from</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// the documentation as well.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">//</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// [1] https://m
sdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">wchar_t</span> *message_buffer = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = ::FormatMessageW(</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  allocate_message_buffer,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  errorCode,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  de
fault_language,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  (LPWSTR)&message_buffer, <span class="comment">// See comment above about quirky cast.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  0, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  std::wstring <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>(message_buffer, size);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</s
pan>  <span class="comment">// Required per documentation above.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ::LocalFree(message_buffer);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(message);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classWindowsError.html"> 106</a></span> <span class="keywo
rd">class </span><a class="code" href="classWindowsError.html">WindowsError</a> : <span class="keyword">public</span> <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classWindowsError.html#a1d7a8ec4ccb9e8de1d1174aa39d1e089"> 108</a></span>  <a class="code" href="classWindowsError.html#a1d7a8ec4ccb9e8de1d1174aa39d1e089">WindowsError</a>() : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::GetLastError()) {}</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classWindowsError.html#a82b53dd919106021585a9151cd156604"> 110</a></span>  <span class="keyword">explicit</span> <a class="code" href="classWindow
sError.html#a82b53dd919106021585a9151cd156604">WindowsError</a>(DWORD _code) : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code) {}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classWindowsError.html#a95807a4d4619cb117ead04f3303249d6"> 112</a></span>  <a class="code" href="classWindowsError.html#a95807a4d4619cb117ead04f3303249d6">WindowsError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::GetLastError(), message) {}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="
line" href="classWindowsError.html#ac5e8aefb564070d6bc43ec1b87272095"> 115</a></span>  <a class="code" href="classWindowsError.html#ac5e8aefb564070d6bc43ec1b87272095">WindowsError</a>(DWORD _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code, message) {}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html"> 120</a></span> <span class="keyword">class </span><a class="code" href="classWindowsSocketError.ht
ml">WindowsSocketError</a> : <span class="keyword">public</span> <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html#a27bced956a7f2453b2f8deacf836478e"> 122</a></span>  <a class="code" href="classWindowsSocketError.html#a27bced956a7f2453b2f8deacf836478e">WindowsSocketError</a>() : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::WSAGetLastError()) {}</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html#a4a81a41e85b87bb39141743f6a99b978"> 124</a></span>  <span class="keyword">explicit</span> <a class="code" href="classWindowsSocketError.html#a4a81a41
e85b87bb39141743f6a99b978">WindowsSocketError</a>(DWORD _code) : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code) {}</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classWindowsSocketError.html#a5e33cba8ac4e338f4066e7bf7e808f95"> 126</a></span>  <a class="code" href="classWindowsSocketError.html#a5e33cba8ac4e338f4066e7bf7e808f95">WindowsSocketError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(::WSAGetLastError(), message) {}</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a
class="line" href="classWindowsSocketError.html#af866e904d4e353613312fc82b24ac5ab"> 129</a></span>  <a class="code" href="classWindowsSocketError.html#af866e904d4e353613312fc82b24ac5ab">WindowsSocketError</a>(DWORD _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  : <a class="code" href="classWindowsErrorBase.html">WindowsErrorBase</a>(_code, message) {}</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#endif // __STOUT_WINDOWS_ERROR_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>
Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classWindowsErrorBase_html_a3d4eef2ab51ef4fc46bb2df7c5880fd8"><div class="ttname"><a href="classWindowsErrorBase.html#a3d4eef2ab51ef4fc46bb2df7c5880fd8">WindowsErrorBase::WindowsErrorBase</a></div><div class="ttdeci">WindowsErrorBase(DWORD _code, const std::string &message)</div><div class="ttdef"><b>Definition:</b> error.hpp:37</div></div>
<div class="ttc" id="classWindowsError_html_ac5e8aefb564070d6bc43ec1b87272095"><div class="ttname"><a href="classWindowsError.html#ac5e8aefb564070d6bc43ec1b87272095">WindowsError::WindowsError</a></div><div class="ttdeci">WindowsError(DWORD _code, const std::string &message)</div><div class="ttdef"><b>Definition:</b> error.hpp:115</div></div>
@@ -67,7 +67,7 @@
<div class="ttc" id="classWindowsErrorBase_html"><div class="ttname"><a href="classWindowsErrorBase.html">WindowsErrorBase</a></div><div class="ttdef"><b>Definition:</b> error.hpp:28</div></div>
<div class="ttc" id="classWindowsSocketError_html_a5e33cba8ac4e338f4066e7bf7e808f95"><div class="ttname"><a href="classWindowsSocketError.html#a5e33cba8ac4e338f4066e7bf7e808f95">WindowsSocketError::WindowsSocketError</a></div><div class="ttdeci">WindowsSocketError(const std::string &message)</div><div class="ttdef"><b>Definition:</b> error.hpp:126</div></div>
<div class="ttc" id="classWindowsError_html_a1d7a8ec4ccb9e8de1d1174aa39d1e089"><div class="ttname"><a href="classWindowsError.html#a1d7a8ec4ccb9e8de1d1174aa39d1e089">WindowsError::WindowsError</a></div><div class="ttdeci">WindowsError()</div><div class="ttdef"><b>Definition:</b> error.hpp:108</div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
<div class="ttc" id="classWindowsError_html_a95807a4d4619cb117ead04f3303249d6"><div class="ttname"><a href="classWindowsError.html#a95807a4d4619cb117ead04f3303249d6">WindowsError::WindowsError</a></div><div class="ttdeci">WindowsError(const std::string &message)</div><div class="ttdef"><b>Definition:</b> error.hpp:112</div></div>
<div class="ttc" id="classWindowsErrorBase_html_a73005906bfdea54ae771e9ee2b8b9bf0"><div class="ttname"><a href="classWindowsErrorBase.html#a73005906bfdea54ae771e9ee2b8b9bf0">WindowsErrorBase::WindowsErrorBase</a></div><div class="ttdeci">WindowsErrorBase(DWORD _code)</div><div class="ttdef"><b>Definition:</b> error.hpp:34</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2killtree_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2killtree_8hpp_source.html b/content/api/latest/c++/windows_2killtree_8hpp_source.html
index e58174d..59700eb 100644
--- a/content/api/latest/c++/windows_2killtree_8hpp_source.html
+++ b/content/api/latest/c++/windows_2killtree_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">killtree.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="windows_2killtree_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment
">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div
class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_KILLTREE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_KILLTREE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="os_8hpp.html">stout/os.hpp</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span>
<span class="comment">// For `SharedHandle` and `pid_t`.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2windows_2jobobject_8hpp.html">stout/os/windows/jobobject.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Terminate the "process tree" rooted at the specified pid.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&
#160;<span class="comment">// Since there is no process tree concept on Windows,</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// internally this function looks up the job object for the given pid</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// and terminates the job. This is possible because `name_job`</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// provides an idempotent one-to-one mapping from pid to name.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<ProcessTree></a>> <a class="code" href="namespaceos.html#ae7bf571af786eae39cb025d516566168">killtree</a>(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a
class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">int</span> signal,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> groups = <span class="keyword">false</span>,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">bool</span> sessions = <span class="keyword">false</span>)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::wstring></a> <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a> = <a class="code" href="namespaceos.html
#a4c477c8086d4b3004c170ee05e5be9bf">os::name_job</a>(pid);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span> (name.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to determine job object name: "</span> + name.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> handle =</div><div class="line"><a name="l00041">
</a><span class="lineno"> 41</span>  <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">os::open_job</a>(JOB_OBJECT_TERMINATE, <span class="keyword">false</span>, name.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span> (handle.isError()) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to open job object: "</span> + handle.error());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classTry.html">Try<N
othing></a> killJobResult = <a class="code" href="namespaceos.html#a8181969d159a69d91d1e265f1bb1eddc">os::kill_job</a>(handle.get());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (killJobResult.isError()) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to delete job object: "</span> + killJobResult.error());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// NOTE: This return value is unused. A future refactor</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span
class="comment">// may change the return type to `Try<None>`.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::list<ProcessTree> process_tree_list;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> process_tree_list;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_KILLTREE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a><
/div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="windows_2killtree_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment
">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div
class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_KILLTREE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_KILLTREE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="os_8hpp.html">stout/os.hpp</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span>
<span class="comment">// For `SharedHandle` and `pid_t`.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2windows_2jobobject_8hpp.html">stout/os/windows/jobobject.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Terminate the "process tree" rooted at the specified pid.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&
#160;<span class="comment">// Since there is no process tree concept on Windows,</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// internally this function looks up the job object for the given pid</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// and terminates the job. This is possible because `name_job`</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// provides an idempotent one-to-one mapping from pid to name.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<ProcessTree></a>> <a class="code" href="namespaceos.html#ae7bf571af786eae39cb025d516566168">killtree</a>(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a
class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">int</span> signal,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> groups = <span class="keyword">false</span>,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">bool</span> sessions = <span class="keyword">false</span>)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::wstring></a> <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a> = <a class="code" href="namespaceos.html
#a4c477c8086d4b3004c170ee05e5be9bf">os::name_job</a>(pid);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span> (name.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to determine job object name: "</span> + name.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> handle =</div><div class="line"><a name="l00041">
</a><span class="lineno"> 41</span>  <a class="code" href="namespaceos.html#aa3da520f1619211c592b12a92639a1f9">os::open_job</a>(JOB_OBJECT_TERMINATE, <span class="keyword">false</span>, name.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span> (handle.isError()) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to open job object: "</span> + handle.error());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classTry.html">Try<N
othing></a> killJobResult = <a class="code" href="namespaceos.html#a8181969d159a69d91d1e265f1bb1eddc">os::kill_job</a>(handle.get());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (killJobResult.isError()) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to delete job object: "</span> + killJobResult.error());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// NOTE: This return value is unused. A future refactor</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span
class="comment">// may change the return type to `Try<None>`.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::list<ProcessTree> process_tree_list;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> process_tree_list;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_KILLTREE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a><
/div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="os_8hpp_html"><div class="ttname"><a href="os_8hpp.html">os.hpp</a></div></div>
[19/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/reparsepoint_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/reparsepoint_8hpp_source.html b/content/api/latest/c++/reparsepoint_8hpp_source.html
index d2960a3..691ef6a 100644
--- a/content/api/latest/c++/reparsepoint_8hpp_source.html
+++ b/content/api/latest/c++/reparsepoint_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="reparsepoint_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_INTERNAL_WINDOWS_REPARSEPOINT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_INTERNAL_WINDOWS_REPARSEPOINT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/tr
y.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="mkdir_8hpp.html">stout/os/mkdir.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2internal_2windows_2attributes_8hpp.html">stout/internal/windows/attributes.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">
#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html"> 29</a></span> <span class="keyword">namespace </span><a class="code" href="namespacecgroups.html#a78e3c7ca2e422779908eec45f859d757">stat</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Specify whether symlink path arguments should be followed or</span></div><div class="line"><a na
me="l00032"></a><span class="lineno"> 32</span> <span class="comment">// not. APIs in the os::stat family that take a FollowSymlink</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// argument all provide FollowSymlink::FOLLOW_SYMLINK as the default value,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// so they will follow symlinks unless otherwise specified.</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c"> 35</a></span> <span class="keyword">enum class</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="co
de" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">DO_NOT_FOLLOW_SYMLINK</a>,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FOLLOW_SYMLINK</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> } <span class="comment">// namespace stat {</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a>
<span class="lineno"> 45</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">namespace </span>windows {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// We pass this struct to `DeviceIoControl` to get information about a reparse</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// point (including things like whether it's a symlink). It is normally part of</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// the Device Driver Kit (DDK), specifically `nitfs.h`, but rather than taking</span></div><div class="line"><a name="l00051"></a><span class="lineno"
> 51</span> <span class="comment">// a dependency on the DDK, we choose to simply copy the struct here. This is a</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// well-worn path used by Boost FS[1], among others. See documentation</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// here[2][3].</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">//</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// [1] http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/src/operations.cpp // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/cc232007.aspx</span></div><div class="line"><a name="l00057"></
a><span class="lineno"> 57</span> <span class="comment">// [3] https://msdn.microsoft.com/en-us/library/cc232005.aspx</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html"> 58</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html">_REPARSE_DATA_BUFFER</a></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Describes, among other things, which type of reparse point this is (e.g.,</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// a symlink).</span></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_
1_1__REPARSE__DATA__BUFFER.html#a1520ec4396e2650f9b479361fe9b4727"> 62</a></span>  ULONG <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a1520ec4396e2650f9b479361fe9b4727">ReparseTag</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Size in bytes of common portion of the `REPARSE_DATA_BUFFER`.</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a6de8b3abb196d2aeca2929b8d172597e"> 64</a></span>  USHORT <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a6de8b3abb196d2aeca2929b8d172597e">ReparseDataLength</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Unused. Ignore.</span></div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structinternal_1_1win
dows_1_1__REPARSE__DATA__BUFFER.html#a4e97b9f5d80873396957e025c4e35e71"> 66</a></span>  USHORT <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a4e97b9f5d80873396957e025c4e35e71">Reserved</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// Holds symlink data.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">struct</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Byte offset in `PathBuffer` where the substitute name begins.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Calculated as an offset from 0.</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="s
tructinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#aba882719b9f33313a812784ae9e7b3b5"> 72</a></span>  USHORT <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#aba882719b9f33313a812784ae9e7b3b5">SubstituteNameOffset</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Length in bytes of the substitute name.</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a12170e3a11f67ec2f060e93e40e6be2d"> 74</a></span>  USHORT <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a12170e3a11f67ec2f060e93e40e6be2d">SubstituteNameLength</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Byte offset in `PathBuffer` where the print name begins. Calculated as</span></div><div class="line"><a na
me="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// an offset from 0.</span></div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a2e9448ef8100749cf1d4e2c6d1b01eff"> 77</a></span>  USHORT <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a2e9448ef8100749cf1d4e2c6d1b01eff">PrintNameOffset</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Length in bytes of the print name.</span></div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a74137b9c802684307550f257a62d263f"> 79</a></span>  USHORT <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a74137b9c802684307550f257a62d263f">PrintNameLength</a>;</div><div class="line"><a name="l000
80"></a><span class="lineno"> 80</span>  <span class="comment">// Indicates whether symlink is absolute or relative. If flags containing</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// `SYMLINK_FLAG_RELATIVE`, then the substitute name is a relative</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// symlink.</span></div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#af1060c96a499d7bed78bd8b3fd9d1c8c"> 83</a></span>  ULONG <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#af1060c96a499d7bed78bd8b3fd9d1c8c">Flags</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// The path string; the Windows declaration is the first byte, but we</span></div><di
v class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// declare a suitably sized array so we can use this struct more easily. The</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// "path string" itself is a Unicode `wchar` array containing both</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// substitute name and print name. They can occur in any order. Use the</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// offset and length of each in this struct to calculate where each starts</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// and ends.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">//
</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/hardware/ff552012(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a77bd10c591a84eb780db48a5195140a5"> 92</a></span>  WCHAR PathBuffer[MAXIMUM_REPARSE_DATA_BUFFER_SIZE];</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } SymbolicLinkReparseBuffer;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> } <a class="code" href="namespaceinternal_1_1windows.html#ac3625d90ddd93b6c9a889610263990c1">REPARSE_DATA_BUFFER</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div clas
s="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// Convenience struct for holding symlink data, meant purely for internal use.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// We pass this around instead of the `REPARSE_DATA_BUFFER` struct, simply</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// because this struct is easier to deal with and reason about.</span></div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1SymbolicLink.html"> 100</a></span> <span class="keyword">struct </span><a class="code" href="structinternal_1_1windows_1_1SymbolicLink.html">SymbolicLink</a></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="struc
tinternal_1_1windows_1_1SymbolicLink.html#a46106b565c75b06e6bc8332c58ae9484"> 102</a></span>  std::wstring <a class="code" href="structinternal_1_1windows_1_1SymbolicLink.html#a46106b565c75b06e6bc8332c58ae9484">substitute_name</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1SymbolicLink.html#a7ca6332f2c62622fdf6a8340989fb837"> 103</a></span>  std::wstring <a class="code" href="structinternal_1_1windows_1_1SymbolicLink.html#a7ca6332f2c62622fdf6a8340989fb837">print_name</a>;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1SymbolicLink.html#a89e2e286624560540be6ad3c2ca484f8"> 104</a></span>  ULONG <a class="code" href="structinternal_1_1windows_1_1SymbolicLink.html#a89e2e286624560540be6ad3c2ca484f8">flags</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="
l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// Checks file/folder attributes for a path to see if the reparse point</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// attribute is set; this indicates whether the path points at a reparse point,</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// rather than a "normal" file or folder.</span></div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a9205fe9be7dc028375cd24338483152b"> 111</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<bool></a> <a class="code" href="namespaceinternal_1_1windows
.html#a9205fe9be7dc028375cd24338483152b">reparse_point_attribute_set</a>(<span class="keyword">const</span> std::wstring& absolute_path)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(absolute_path.data());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(attributes.<a class="code" href="classTry.htm
l#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> (attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_REPARSE_POINT) != 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// Attempts to extract symlink data out of a `REPARSE_DATA_BUFFER` (which could</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123
</span> <span class="comment">// hold other things, e.g., mount point data).</span></div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#afd9a4ce68b9e02355cf2a92c49828081"> 124</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SymbolicLink></a> <a class="code" href="namespaceinternal_1_1windows.html#afd9a4ce68b9e02355cf2a92c49828081">build_symbolic_link</a>(<span class="keyword">const</span> <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html">REPARSE_DATA_BUFFER</a>& data)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> is_symLink = (data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a1520ec4396e2650f9b47
9361fe9b4727">ReparseTag</a> & IO_REPARSE_TAG_SYMLINK) != 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (!is_symLink) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Data buffer is not a symlink"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// NOTE: This buffer is not null terminated.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">const</span> WCHAR* substitute_name =</div><div class="line"><a name="l00133"></a><span class="lineno">
133</span>  data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">SymbolicLinkReparseBuffer</a>.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a77bd10c591a84eb780db48a5195140a5">PathBuffer</a> +</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">SymbolicLinkReparseBuffer</a>.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#aba882719b9f33313a812784ae9e7b3b5">SubstituteNameOffset</a> / <span class="keyword">sizeof</span>(WCHAR);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> substitute_name_length =</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> 
data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">SymbolicLinkReparseBuffer</a>.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a12170e3a11f67ec2f060e93e40e6be2d">SubstituteNameLength</a> / <span class="keyword">sizeof</span>(WCHAR);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// NOTE: This buffer is not null terminated.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">const</span> WCHAR* print_name =</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">SymbolicLinkReparseBuffer</a>.<a class="code" href="structinternal_1_1
windows_1_1__REPARSE__DATA__BUFFER.html#a77bd10c591a84eb780db48a5195140a5">PathBuffer</a> +</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">SymbolicLinkReparseBuffer</a>.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a2e9448ef8100749cf1d4e2c6d1b01eff">PrintNameOffset</a> / <span class="keyword">sizeof</span>(WCHAR);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> print_name_length =</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">SymbolicLinkReparseBuffer</a>.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BU
FFER.html#a74137b9c802684307550f257a62d263f">PrintNameLength</a> / <span class="keyword">sizeof</span>(WCHAR);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <a class="code" href="structinternal_1_1windows_1_1SymbolicLink.html">SymbolicLink</a>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  std::wstring(substitute_name, substitute_name_length),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  std::wstring(print_name, print_name_length),</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  data.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html#a7a7397a1d339f687d5fd5a5f7b2f6457">SymbolicLinkReparseBuffer</a>.<a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFF
ER.html#af1060c96a499d7bed78bd8b3fd9d1c8c">Flags</a>};</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// Attempts to get a file or folder handle for an absolute path, and follows</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// symlinks. That is, if the path points at a symlink, the handle will refer to</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// the file or folder the symlink points at, rather than the symlink itself.</span></div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.htm
l#a5b261c85683d489b859236063e979e98"> 155</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SharedHandle></a> <a class="code" href="namespaceinternal_1_1windows.html#a5b261c85683d489b859236063e979e98">get_handle_follow</a>(<span class="keyword">const</span> std::string& absolute_path)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="line
no"> 159</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(attributes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">bool</span> resolved_path_is_directory = attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l0
0165"></a><span class="lineno"> 165</span>  <span class="comment">// NOTE: The name of `CreateFile` is misleading: it is also used to retrieve</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// handles to existing files or directories as if it were actually `OpenPath`</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// (which does not exist). We use `OPEN_EXISTING` but not</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// `FILE_FLAG_OPEN_REPARSE_POINT` to explicitily follow (resolve) symlinks in</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// the path to the file or directory.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">//</span></div><div class
="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// Note also that `CreateFile` will appropriately generate a handle for</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// either a folder or a file, as long as the appropriate flag is being set:</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// `FILE_FLAG_BACKUP_SEMANTICS`.</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">//</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// The `FILE_FLAG_BACKUP_SEMANTICS` flag is being set whenever the target is</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// a directory. According to MSDN[1]: "You must set this flag to obta
in a</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// handle to a directory. A directory handle can be passed to some functions</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// instead of a file handle". More `FILE_FLAG_BACKUP_SEMANTICS` documentation</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// can be found in MSDN[2].</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">//</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// The `GENERIC_READ` flag is being used because it's the most common way of</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// opening a file for reading only.
The `SHARE` flags allow other processes</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// to read the file at the same time, as well as allow this process to read</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// files that were also opened with these flags. MSDN[1] provides a more</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// detailed explanation of these flags.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">//</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00188"></a><span class="lineno">
188</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">const</span> DWORD access_flags = resolved_path_is_directory</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  ? FILE_FLAG_BACKUP_SEMANTICS</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  : FILE_ATTRIBUTE_NORMAL;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a
class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path).data(),</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  GENERIC_READ, <span class="comment">// Open the file for reading only.</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// Must pass in all SHARE flags below, in case file is already open.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Otherwise, we may get an access denied error.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div><div class="line"><a
name="l00200"></a><span class="lineno"> 200</span>  OPEN_EXISTING, <span class="comment">// Open existing file.</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  access_flags, <span class="comment">// Open file, not the symlink itself.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>
60; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>(handle, ::CloseHandle);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment">// Attempts to get a file or folder handle for an absolute path, and does not</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// follow symlinks. That is, if the path points at a symlink, the handle will</span></div><div class="line"><a name="l00214"></a><span class="line
no"> 214</span> <span class="comment">// refer to the symlink rather than the file or folder the symlink points at.</span></div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14"> 215</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SharedHandle></a> <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">get_handle_no_follow</a>(<span class="keyword">const</span> std::string& absolute_path)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(<a class="code"
href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path));</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(attributes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">bool</span> resolved_path_is_dir
ectory = attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// NOTE: According to the `CreateFile` documentation[1], the `OPEN_EXISTING`</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// and `FILE_FLAG_OPEN_REPARSE_POINT` flags need to be used when getting a</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// handle for the symlink.</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">//</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Note also that `CreateFile` will
appropriately generate a handle for</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// either a folder or a file, as long as the appropriate flag is being set:</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// `FILE_FLAG_BACKUP_SEMANTICS` or `FILE_FLAG_OPEN_REPARSE_POINT`.</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">//</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="comment">// The `FILE_FLAG_BACKUP_SEMANTICS` flag is being set whenever the target is</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// a directory. According to MSDN[1]: "You must set this flag to obtain a</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>
0; <span class="comment">// handle to a directory. A directory handle can be passed to some functions</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// instead of a file handle". More `FILE_FLAG_BACKUP_SEMANTICS` documentation</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// can be found in MSDN[2].</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">//</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// The `GENERIC_READ` flag is being used because it's the most common way of</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// opening a file for reading only. The `SHARE` flags allow other processes</span></div><div class="line"><a name="l00241"></a><s
pan class="lineno"> 241</span>  <span class="comment">// to read the file at the same time, as well as allow this process to read</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// files that were also opened with these flags. MSDN[1] provides a more</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// detailed explanation of these flags.</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="comment">//</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windo
ws/desktop/aa364399(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">const</span> DWORD access_flags = resolved_path_is_directory</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  ? (FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  : FILE_FLAG_OPEN_REPARSE_POINT;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle = ::CreateFileW(</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="namespaceinternal_1_1windows.html#
abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(absolute_path).data(),</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  GENERIC_READ, <span class="comment">// Open the file for reading only.</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Must pass in all SHARE flags below, in case file is already open.</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// Otherwise, we may get an access denied error.</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#
160; OPEN_EXISTING, <span class="comment">// Open existing symlink.</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  access_flags, <span class="comment">// Open symlink, not the file it points to.</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">nullptr</span>); <span class="comment">// Ignored.</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span> (handle == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l0026
5"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>(handle, ::CloseHandle);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment">// Attempts to get the symlink data for a file or folder handle.</span></div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6"> 271</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SymbolicLink></a> <a class="code" href="namespa
ceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">get_symbolic_link_data</a>(<span class="keyword">const</span> <a class="code" href="namespacerouting_1_1queueing_1_1ingress.html#a934208b6017d0a9aed90b6594bb8292f">HANDLE</a> handle)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// To get the symlink data, we call `DeviceIoControl`. This function is part</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// of the Device Driver Kit (DDK)[1] and, along with `FSCTL_GET_REPARSE_POINT`</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">// is used to emit information about reparse points (and, thus, symlinks,</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span clas
s="comment">// since symlinks are implemented with reparse points). This technique is</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// being used in Boost FS code as well[2].</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">//</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// Summarized, the documentation tells us that we need to pass in</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// `FSCTL_GET_REPARSE_POINT` to get the function to populate a</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// `REPARSE_DATA_BUFFER` struct with data about a reparse point.</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span cla
ss="comment">// The `REPARSE_DATA_BUFFER` struct is defined in a DDK header file,</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// so to avoid bringing in a multitude of DDK headers we take a cue from</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// Boost FS, and copy the struct into this header (see above).</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">//</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// Finally, for context, it may be worth looking at the MSDN</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// documentation[3] for `DeviceIoControl` itself.</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <sp
an class="comment">//</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa364571(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// [2] https://svn.boost.org/trac/boost/ticket/4663</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// [3] https://msdn.microsoft.com/en-us/library/windows/desktop/aa363216(v=vs.85).aspx // NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="structinternal_1_1windows_1_1__REPARSE__DATA__BUFFER.html">REPARSE_DATA_BUFFER</a> buffer;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  DWORD ignored = 0;</div><div class="line"><a name
="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// The semantics of this function are: get the reparse data associated with</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// the `handle` of some open directory or file, and that data in</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// `reparse_point_data`.</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> BOOL reparse_data_obtained = ::DeviceIoControl(</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  handle, <span class="comment">// Handle to file or directory.</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  FS
CTL_GET_REPARSE_POINT, <span class="comment">// Gets reparse point data for file/folder.</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">nullptr</span>, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  0, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  &buffer,</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">sizeof</span>(buffer),</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  &ignored, <span class="comment">// Ignored.</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">nullptr</span>); <span class="commen
t">// Ignored.</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</span> (!reparse_data_obtained) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="stringliteral">"'internal::windows::get_symbolic_link_data': 'DeviceIoControl' call "</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="stringliteral">"failed"</span>);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div c
lass="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceinternal_1_1windows.html#afd9a4ce68b9e02355cf2a92c49828081">build_symbolic_link</a>(buffer);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="comment">// Creates a reparse point with the specified target. The target can be either</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="comment">// a file (in which case a junction is created), or a folder (in which case a</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="comment">// mount point is cr
eated).</span></div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334"> 321</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">create_symbolic_link</a>(</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">const</span> std::string& target,</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">const</span> std::string& reparse_point)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// Determine if target is a folder or a file. This makes a difference</span></div><div class="line
"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">// in the way we call `create_symbolic_link`.</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<DWORD></a> attributes = <a class="code" href="namespaceinternal_1_1windows.html#adb5b8a8afe285eb66a0a551f2382d113">get_file_attributes</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target));</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">bool</span> target_is_folder = <span class="keyword">false</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (attributes.<a class="code" href="classTry.html#a6543d7
d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  target_is_folder = attributes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() & FILE_ATTRIBUTE_DIRECTORY;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">// Bail out if target is already a reparse point.</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="classTry.html">Try<bool></a> attribute_set = <a class="code" href="namespaceinternal_1_1windows.html#a9205fe9be7dc028375cd24338483152b">reparse_point_attribute_set</a>(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(tar
get));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span> (attribute_set.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && attribute_set.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Path '"</span> + target + <span class="stringliteral">"' is already a reparse point"</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  DWORD <a class="code" href="namespaceflags.html">flags</a> = target_is_folder
? SYMBOLIC_LINK_FLAG_DIRECTORY : 0;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="comment">// Lambda to create symlink with given flags.</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keyword">auto</span> link = [&reparse_point, &target](<span class="keyword">const</span> DWORD <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  return ::CreateSymbolicLinkW(</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// Path to link.</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078
380aa1">longpath</a>(reparse_point).data(),</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// Path to target.</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(target).data(),</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  flags);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  };</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="comment">// `CreateSymbolicLink` normally adjusts the process token's privileges to</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="comment">// allow for symlink creation; h
owever, we explicitly avoid this with the</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="comment">// following flag to not require administrative privileges.</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (link(flags | SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE)) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">// If this failed because the non-symbolic link feature was not supported,</span></div><div class="line"><a name="l00360"></a><s
pan class="lineno"> 360</span>  <span class="comment">// try again without the feature. This is for legacy support.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span> (::GetLastError() == ERROR_INVALID_PARAMETER) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span> (link(flags)) {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">re
turn</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> } <span class="comment">// namespace windows {</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#endif // __STOUT_INTERNAL_WINDOWS_REPARSEPOINT_HPP__</span></div><div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_hand
le_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:215</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classSharedHandle_html"><div class="ttname"><a href="classSharedHandle.html">SharedHandle</a></div><div class="ttdef"><b>Definition:</b> windows.hpp:72</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/resources_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/resources_8hpp_source.html b/content/api/latest/c++/resources_8hpp_source.html
index 8ed5710..a86e568 100644
--- a/content/api/latest/c++/resources_8hpp_source.html
+++ b/content/api/latest/c++/resources_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="classmesos_1_1Resources_html_a941fe78c62de3a6fa7c7cf977960694a"><div class="ttname"><a href="classmesos_1_1Resources.html#a941fe78c62de3a6fa7c7cf977960694a">mesos::Resources::size</a></div><div class="ttdeci">size_t size() const </div><div class="ttdef"><b>Definition:</b> resources.hpp:390</div></div>
<div class="ttc" id="classmesos_1_1Resources_html_a6c4d4a889c254fb4241644c6557d511e"><div class="ttname"><a href="classmesos_1_1Resources.html#a6c4d4a889c254fb4241644c6557d511e">mesos::Resources::types</a></div><div class="ttdeci">std::map< std::string, Value_Type > types() const </div></div>
<div class="ttc" id="classmesos_1_1ResourceConversion_html_afa8d5fe5c9c3f6f1588d7df710262080"><div class="ttname"><a href="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080">mesos::ResourceConversion::consumed</a></div><div class="ttdeci">Resources consumed</div><div class="ttdef"><b>Definition:</b> resources.hpp:718</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classmesos_1_1Resources_html_a376ffdcf83696b9a957b8a24ce596649"><div class="ttname"><a href="classmesos_1_1Resources.html#a376ffdcf83696b9a957b8a24ce596649">mesos::Resources::names</a></div><div class="ttdeci">std::set< std::string > names() const </div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
[18/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/result_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/result_8hpp_source.html b/content/api/latest/c++/result_8hpp_source.html
index ec59e4d..970adc7 100644
--- a/content/api/latest/c++/result_8hpp_source.html
+++ b/content/api/latest/c++/result_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="result_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_RESULT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_RESULT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <assert.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><sp
an class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="some_8hpp.html">stout/some.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>
0;<span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// This class is equivalent to Try<Option<T>> and can represent only</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// one of these states at a time:</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// 1) A value of T.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// 2) No value of T.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// 3) An error state, with a corresponding error string.</span></div><div class="line"><a
name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Calling 'isSome' will return true if it stores a value, in which</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// case calling 'get' will return a constant reference to the T</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// stored. Calling 'isNone' returns true if no value is stored and</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// there is no error. Calling 'isError' will return true if it stores</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// an error, in which case calling 'error' will return the error</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span
class="comment">// string.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span><a class="code" href="classResult.html">Result</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classResult.html#aa3d926b499dce65b365ea7e31f68514a"> 43</a></span>  <span class="keyword">static</span> <a class="code" href="classResult.html">Result<T></a> <a class="code" href="classResult.html#aa3d926b499dce65b365ea7e31f68514a">none</a>()</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span
>  {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <a class="code" href="classResult.html">Result<T></a>(<a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classResult.html#a0a503a3f3549b34b19dc47280d806e90"> 48</a></span>  <span class="keyword">static</span> <a class="code" href="classResult.html">Result<T></a> <a class="code" href="classResult.html#a0a503a3f3549b34b19dc47280d806e90">some</a>(<span class="keyword">const</span> T& t)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="ke
ywordflow">return</span> <a class="code" href="classResult.html">Result<T></a>(t);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee"> 53</a></span>  <span class="keyword">static</span> <a class="code" href="classResult.html">Result<T></a> <a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>(<span class="keyword">const</span> std::string& message)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="classResult.html">Result<T></a>(<a class="code" href="classError.html">Error</a>(message));
</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classResult.html#aef4025c8008853cc7ac9fb4b95dedb58"> 58</a></span>  <a class="code" href="classResult.html#aef4025c8008853cc7ac9fb4b95dedb58">Result</a>(<span class="keyword">const</span> T& _t)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(_t)) {}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classResult.html#a61f7a8612af4b813816ddd01247d4b66"> 61</a></span>  <a class="code" href="classResult.html#a61f7a8612af4b813816ddd01247d4b66">Result</a>(T&& _t)<
/div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<a class="code" href="namespacestd.html">std</a>::move(_t))) {}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">template</span> <</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">typename</span> U,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if<</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::is_constructible<T, const U&>::value><a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba83
80776487fba">::type</a>></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classResult.html#a457818fb4e681c1451de3b85caa23f1a"> 68</a></span>  <a class="code" href="classResult.html#a457818fb4e681c1451de3b85caa23f1a">Result</a>(<span class="keyword">const</span> U& u)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(u)) {}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classResult.html#aed2b0016c27824c33bf0eb0035191eda"> 71</a></span>  <a class="code" href="classResult.html#aed2b0016c27824c33bf0eb0035191eda">Result</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<T></a>& option)</div><div class="line"><a name="l00072"></a><span clas
s="lineno"> 72</span>  : data(option.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>() ?</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classTry.html">Try</a><<a class="code" href="classOption.html">Option</a><T>>(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(option.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>())) :</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classTry.html">Try</a><<a class="code" href="classOption.html">Option</a><T>>(<a class="code" href="structNone.html">None</a>())) {}</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classResult.html#af88c39bb6eb1271dea96df3e33f16
070"> 76</a></span>  <a class="code" href="classResult.html#af88c39bb6eb1271dea96df3e33f16070">Result</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try<T></a>& _t)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  : data(_t.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>() ?</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="classTry.html">Try</a><<a class="code" href="classOption.html">Option</a><T>>(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(_t.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>())) :</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classTry.html">Try</a><<a class="code" href="classOption.html">Option</a><T>>(<a class="code"
href="classError.html">Error</a>(_t.<a class="code" href="classResult.html#af8585c05859b4e912cecb823a856bf38">error</a>()))) {}</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classResult.html#a915f263c53ab8b80d85f014ebb817fb6"> 81</a></span>  <a class="code" href="classResult.html#a915f263c53ab8b80d85f014ebb817fb6">Result</a>(<span class="keyword">const</span> <a class="code" href="structNone.html">None</a>& <a class="code" href="classResult.html#aa3d926b499dce65b365ea7e31f68514a">none</a>)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  : data(none) {}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> U></div><
div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classResult.html#a6b9c26d514e29bbe215f3298c412e2fb"> 85</a></span>  <a class="code" href="classResult.html#a6b9c26d514e29bbe215f3298c412e2fb">Result</a>(<span class="keyword">const</span> <a class="code" href="struct__Some.html">_Some<U></a>& <a class="code" href="classResult.html#a0a503a3f3549b34b19dc47280d806e90">some</a>)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  : data(some) {}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classResult.html#a04393dc61e3f8972de5106c63f1ea50d"> 88</a></span>  <a class="code" href="classResult.html#a04393dc61e3f8972de5106c63f1ea50d">Result</a>(<span class="keyword">const</span> <a class="code" href="classError.html">Error</a>& <a class="code" href="classResult.html#af8585c0
5859b4e912cecb823a856bf38">error</a>)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  : data(error) {}</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classResult.html#afa74b72e992b461ada68c3dee72e498a"> 91</a></span>  <a class="code" href="classResult.html#afa74b72e992b461ada68c3dee72e498a">Result</a>(<span class="keyword">const</span> <a class="code" href="classErrnoError.html">ErrnoError</a>& <a class="code" href="classResult.html#af8585c05859b4e912cecb823a856bf38">error</a>)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  : data(error) {}</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class
="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classResult.html#aef4025c8008853cc7ac9fb4b95dedb58">Result</a>(<span class="keyword">const</span> <a class="code" href="classWindowsError.html">WindowsError</a>& <a class="code" href="classResult.html#af8585c05859b4e912cecb823a856bf38">error</a>)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  : data(error) {}</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// We don't need to implement these because we are leveraging</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Try<Option<T>>.</span></d
iv><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classResult.html#aef4025c8008853cc7ac9fb4b95dedb58">Result</a>(<span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classResult.html#aef4025c8008853cc7ac9fb4b95dedb58">Result</a>(<a class="code" href="classResult.html">Result</a>&& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classResult.html#ae02f9998fa42cfcefae3022fa11c077a">~Result</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div cla
ss="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classResult.html">Result<T></a>& <a class="code" href="classResult.html#a796771fd811f190b98476babe0fa460c">operator=</a>(<span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classResult.html">Result<T></a>& <a class="code" href="classResult.html#a796771fd811f190b98476babe0fa460c">operator=</a>(<a class="code" href="classResult.html">Result<T></a>&& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// 'isSome', 'isNone', and 'isError' are mutually
exclusive. They</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// correspond to the underlying unioned state of the Option and Try.</span></div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classResult.html#a85eaa52037223d71092e65701c166562"> 111</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && data-><a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>(); }</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49"> 112</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classR
esult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && data->isNone(); }</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d"> 113</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>(); }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412"> 115</a></span>  <span class="keyword">const</span>
T& <span class="keyword">get</span>() <span class="keyword">const</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (!<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  std::string errorMessage = <span class="stringliteral">"Result::get() but state == "</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span> (<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  errorMessage += <span class="stringliteral">"ERROR: "</span> + data.<a class="code" href="classTry.html#aec
4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  errorMessage += <span class="stringliteral">"NONE"</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(errorMessage);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> data-><a class="code" href="classTry.ht
ml#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classResult.html#a77c85b3ec90f9433fc228e5e7fbf6023"> 129</a></span>  T& <span class="keyword">get</span>()</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">const_cast<</span>T&<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classResult.html">Result</a>&<span class="keyword">></span>(*this).<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>());</div><div clas
s="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classResult.html#a4a9b579d9529b43cae207fb3aa7b1c0f"> 134</a></span>  <span class="keyword">const</span> T* <a class="code" href="classResult.html#a4a9b579d9529b43cae207fb3aa7b1c0f">operator-></a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &<span class="keyword">get</span>(); }</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classResult.html#a4703a38daec2a75b4988ba80af098a6e"> 135</a></span>  T* <a class="code" href="classResult.html#a4703a38daec2a75b4988ba80af098a6e">operator-></a>() { <span class="keywordflow">return</span> &<span class="keyword">get</span>(); }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>
60;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classResult.html#af8585c05859b4e912cecb823a856bf38"> 137</a></span>  <span class="keyword">const</span> std::string& <a class="code" href="classResult.html#af8585c05859b4e912cecb823a856bf38">error</a>()<span class="keyword"> const </span>{ assert(<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()); <span class="keywordflow">return</span> data.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>(); }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// We leverage Try<Option<T>> to avoid dynamic allocation of T. This</span></div><div class="line"><a n
ame="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// means we can take advantage of all the RAII features of 'Try' and</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// makes the implementation of this class much simpler!</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classTry.html">Try<Option<T></a>> data;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> };</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#endif // __STOUT_RESULT_HPP__</span></div><div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><di
v class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classResult_html_a6b9c26d514e29bbe215f3298c412e2fb"><div class="ttname"><a href="classResult.html#a6b9c26d514e29bbe215f3298c412e2fb">Result::Result</a></div><div class="ttdeci">Result(const _Some< U > &some)</div><div class="ttdef"><b>Definition:</b> result.hpp:85</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
@@ -68,7 +68,7 @@
<div class="ttc" id="classResult_html_a796771fd811f190b98476babe0fa460c"><div class="ttname"><a href="classResult.html#a796771fd811f190b98476babe0fa460c">Result::operator=</a></div><div class="ttdeci">Result< T > & operator=(const Result< T > &that)=default</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> type_utils.hpp:510</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="classResult_html_a4a9b579d9529b43cae207fb3aa7b1c0f"><div class="ttname"><a href="classResult.html#a4a9b579d9529b43cae207fb3aa7b1c0f">Result::operator-></a></div><div class="ttdeci">const T * operator->() const </div><div class="ttdef"><b>Definition:</b> result.hpp:134</div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
<div class="ttc" id="classResult_html_a915f263c53ab8b80d85f014ebb817fb6"><div class="ttname"><a href="classResult.html#a915f263c53ab8b80d85f014ebb817fb6">Result::Result</a></div><div class="ttdeci">Result(const None &none)</div><div class="ttdef"><b>Definition:</b> result.hpp:81</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/sched_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/sched_8hpp_source.html b/content/api/latest/c++/sched_8hpp_source.html
index fc22c8c..d47bc2c 100644
--- a/content/api/latest/c++/sched_8hpp_source.html
+++ b/content/api/latest/c++/sched_8hpp_source.html
@@ -54,13 +54,13 @@
<div class="contents">
<a href="sched_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span class
="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distributed
under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __LINUX_SCHED_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __LINUX_SCHED_HPP__</span></div><div class="line"><a name="l0
0019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// This file contains Linux-only OS utilities.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#ifndef __linux__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#error "linux/sched.hpp is only available on Linux systems."</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <sched.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Some ol
d distributions, e.g., Redhat 5.5, do not correctly include</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// linux/sched.h.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <linux/sched.h></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="line
no"> 34</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacesched.html"> 39</a></span> <span class="keyword">namespace </span><a class="code" href="namespacesc
hed.html">sched</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0d"> 41</a></span> <span class="keyword">enum</span> <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0d">Policy</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da0249cd4af5697d05fc0ae0e9e8cb602c"> 43</a></span>  <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da0249cd4af5697d05fc0ae0e9e8cb602c">OTHER</a> = SCHED_OTHER, <span class="comment">// Default policy.</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespacesched.html#a51639e5b9ba17424593e5b263f867
a0da259f4bfe6bb04733cdf9650637eed85d"> 44</a></span>  <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da259f4bfe6bb04733cdf9650637eed85d">BATCH</a> = SCHED_BATCH, <span class="comment">// Non-interactive, CPU intensive.</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0daebaee7d1ec50f96b6ab8f531f92cf56e"> 45</a></span>  <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0daebaee7d1ec50f96b6ab8f531f92cf56e">IDLE</a> = SCHED_IDLE, <span class="comment">// Very low priority.</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da3b0554820cb08d52616cdfde896067d4"> 46</a></span>  <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da3b0554820cb08d52616cdfde896067d4">FIFO</a> = SCHED_FIFO, <span class="c
omment">// Realtime.</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da8964a9f6005e1a993ae167a3258feea5"> 47</a></span>  <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da8964a9f6005e1a993ae167a3258feea5">RR</a> = SCHED_RR <span class="comment">// Realtime, round-robin.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="namespacesched_1_1policy.html"> 51</a></span> <span class="keyword">namespace </span>policy {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span cla
ss="lineno"> 53</span> <span class="comment">// Return the current scheduling policy for the specified pid, or for</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// the caller if pid is None() or zero.</span></div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespacesched_1_1policy.html#aa37ce2066e3741ef2a9a8a29be5cc0dc"> 55</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Policy></a> <span class="keyword">get</span>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<pid_t></a>& pid = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceproc.html#a3439
6c6140a28f583dc13fee3c3c35d4">status</a> = sched_getscheduler(pid.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() ? pid.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() : 0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span> (status == -1) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to get scheduler policy"</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span clas
s="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0d">Policy</a><span class="keyword">></span>(<a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// Set the scheduling policy for the specified pid, or for the caller</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// if pid is None() or zero. Only realtime scheduling policies (FIFO</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="c
omment">// and RR) accept a priority (within a range, see</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// sched_setscheduler(2)).</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// TODO(idownes): Add wrappers around sched_get_priority_{min,max}.</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespacesched_1_1policy.html#a96002502928baa764f913e8bce175b32"> 72</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <span class="keyword">set</span>(</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0d">Policy</a> policy,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">const</span> <a c
lass="code" href="classOption.html">Option<pid_t></a>& pid = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">int</span> priority = 0)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> ((policy == <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da0249cd4af5697d05fc0ae0e9e8cb602c">OTHER</a> || policy == <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da259f4bfe6bb04733cdf9650637eed85d">BATCH</a> || policy == <a class="code" href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0daebaee7d1ec50f96b6ab8f531f92cf56e">IDLE</a>) &&</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  priority != 0) {</div><div class=
"line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Non-real-time scheduling policies only support priority = 0"</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  sched_param param;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  param.sched_priority = priority;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span> (sched_setscheduler(pid.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() ? pid.<a class="code"
href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() : 0, policy, &param) == -1) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to set scheduler policy"</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> } <span class="comment">//
namespace policy {</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> } <span class="comment">// namespace sched {</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#endif // __LINUX_SCHED_HPP__</span></div><div class="ttc" id="namespacesched_html_a51639e5b9ba17424593e5b263f867a0da3b0554820cb08d52616cdfde896067d4"><div class="ttname"><a href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0da3b0554820cb08d52616cdfde896067d4">sched::FIFO</a></div><div class="ttdef"><b>Definition:</b> sched.hpp:46</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< pid_t ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceproc_html_a34396c6140a28f583dc13fee3c3c35d4"><div class="ttname"><a href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a></div><div class="ttdeci">Result< ProcessStatus > status(pid_t pid)</div><div class="ttdef"><b>Definition:</b> proc.hpp:166</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespacesched_html_a51639e5b9ba17424593e5b263f867a0d"><div class="ttname"><a href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0d">sched::Policy</a></div><div class="ttdeci">Policy</div><div class="ttdef"><b>Definition:</b> sched.hpp:41</div></div>
<div class="ttc" id="namespacesched_html"><div class="ttname"><a href="namespacesched.html">sched</a></div><div class="ttdef"><b>Definition:</b> sched.hpp:39</div></div>
<div class="ttc" id="namespacesched_html_a51639e5b9ba17424593e5b263f867a0daebaee7d1ec50f96b6ab8f531f92cf56e"><div class="ttname"><a href="namespacesched.html#a51639e5b9ba17424593e5b263f867a0daebaee7d1ec50f96b6ab8f531f92cf56e">sched::IDLE</a></div><div class="ttdef"><b>Definition:</b> sched.hpp:45</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2common_2http_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2common_2http_8hpp_source.html b/content/api/latest/c++/src_2common_2http_8hpp_source.html
index 0922eb7..4f701af 100644
--- a/content/api/latest/c++/src_2common_2http_8hpp_source.html
+++ b/content/api/latest/c++/src_2common_2http_8hpp_source.html
@@ -57,7 +57,7 @@
<div class="ttc" id="classmesos_1_1AcceptingObjectApprover_html"><div class="ttname"><a href="classmesos_1_1AcceptingObjectApprover.html">mesos::AcceptingObjectApprover</a></div><div class="ttdef"><b>Definition:</b> http.hpp:179</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1RequestMediaTypes_html_abfa2dddc4420615fa93f72ffa6bc44e6"><div class="ttname"><a href="structmesos_1_1internal_1_1RequestMediaTypes.html#abfa2dddc4420615fa93f72ffa6bc44e6">mesos::internal::RequestMediaTypes::accept</a></div><div class="ttdeci">ContentType accept</div><div class="ttdef"><b>Definition:</b> http.hpp:89</div></div>
<div class="ttc" id="namespacemesos_html_a13035ce0cc66cca4a467787b4716039e"><div class="ttname"><a href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">mesos::ContentType</a></div><div class="ttdeci">ContentType</div><div class="ttdef"><b>Definition:</b> http.hpp:43</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< ContentType ></a></div></div>
<div class="ttc" id="classmesos_1_1AcceptingObjectApprover_html_a3b1c6c813ccb670a90f7e2504f6d1cfc"><div class="ttname"><a href="classmesos_1_1AcceptingObjectApprover.html#a3b1c6c813ccb670a90f7e2504f6d1cfc">mesos::AcceptingObjectApprover::approved</a></div><div class="ttdeci">virtual Try< bool > approved(const Option< ObjectApprover::Object > &object) const noexceptoverride</div><div class="ttdoc">NOTE: As this function can be used synchronously by actors it is essential that it does not block! ...</div><div class="ttdef"><b>Definition:</b> http.hpp:182</div></div>
<div class="ttc" id="namespaceprocess_1_1http_html_ad8f400b5e54038df7e5662ec35da05fa"><div class="ttname"><a href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">process::http::request</a></div><div class="ttdeci">Future< Response > request(const Request &request, bool streamedResponse=false)</div><div class="ttdoc">Asynchronously sends an HTTP request to the process and returns the HTTP response once the entire res...</div></div>
[30/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/module_2manager_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/module_2manager_8hpp_source.html b/content/api/latest/c++/module_2manager_8hpp_source.html
index 8a372a6..bc66b08 100644
--- a/content/api/latest/c++/module_2manager_8hpp_source.html
+++ b/content/api/latest/c++/module_2manager_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="module_2manager_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><
span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// d
istributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __MODULE_MANAGER_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __MODULE_MANAGER_HPP__</span></div><div class="l
ine"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <mutex></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <glog/logging.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span cla
ss="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2module_8hpp.html">mesos/module.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2module_2module_8hpp.html">mesos/module/module.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="owned_8hpp.html">process/owned.hpp</a>></span></div><div class="line"><a name="l00033"><
/a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="dynamiclibrary_8hpp.html">stout/dynamiclibrary.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="
code" href="synchronized_8hpp.html">stout/synchronized.hpp</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="messages_8hpp.html">messages/messages.hpp</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">namespace </span>modules {</div><div class="line"><a name="l00045"></a><span c
lass="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Mesos module loading.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// Phases:</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// 1. Load dynamic libraries that contain modules from the Modules</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// instance which may have come from a commandline flag.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// 2. Verify versions and compatibilities.</span>
</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// a) Library compatibility. (Module API version check)</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// b) Module compatibility. (Module Kind version check)</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// 3. Instantiate singleton per module. (happens in the library)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// 4. Bind reference to use case. (happens in Mesos)</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classmesos_1_1modules_1_1ModuleManager.html"> 59</a></spa
n> <span class="keyword">class </span><a class="code" href="classmesos_1_1modules_1_1ModuleManager.html">ModuleManager</a></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Loads dynamic libraries, and verifies the compatibility of the</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// modules in them.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">//</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// NOTE: If loading fails at a particular library we don't unload</span></div><div class="line"><a name="l00066"></a><span
class="lineno"> 66</span>  <span class="comment">// all of the already loaded libraries.</span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classmesos_1_1modules_1_1ModuleManager.html#a3bb2245ab8a00d294fc352f96158ef6e"> 67</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classmesos_1_1modules_1_1ModuleManager.html#a3bb2245ab8a00d294fc352f96158ef6e">load</a>(<span class="keyword">const</span> Modules& modules)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> loadManifest(modules);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name=
"l00072"></a><span class="lineno"> 72</span>  <span class="comment">// NOTE: If loading fails at a particular library we don't unload</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// all of the already loaded libraries.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classmesos_1_1modules_1_1ModuleManager.html#a3bb2245ab8a00d294fc352f96158ef6e">load</a>(<span class="keyword">const</span> std::string& modulesDir);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// create() should be called only after load().</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <sp
an class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classmesos_1_1modules_1_1ModuleManager.html#a0ab072c60a3c002765c843bdb6eafed4"> 78</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<T*></a> <a class="code" href="classmesos_1_1modules_1_1ModuleManager.html#a0ab072c60a3c002765c843bdb6eafed4">create</a>(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> std::string& moduleName,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<Parameters></a>& params = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"
><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">synchronized</span> (mutex) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (!moduleBases.contains(moduleName)) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="stringliteral">"Module '"</span> + moduleName + <span class="stringliteral">"' unknown"</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="structmesos_1_1mo
dules_1_1Module.html">Module<T></a>* module = (<a class="code" href="structmesos_1_1modules_1_1Module.html">Module<T></a>*) moduleBases[moduleName];</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (module->create == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="stringliteral">"Error creating module instance for '"</span> + moduleName + <span class="stringliteral">"': "</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="stringliteral">"create() method not found"</span>);</div><div class="line"><a name="l00093"></a><
span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  std::string expectedKind = kind<T>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (expectedKind != module->kind) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="stringliteral">"Error creating module instance for '"</span> + moduleName + <span class="stringliteral">"': "</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="stringliteral">"module is
of kind '"</span> + module->kind + <span class="stringliteral">"', but the requested "</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="stringliteral">"kind is '"</span> + expectedKind + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  T* instance =</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  module->create(</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  params.isSome() ? params.get() : moduleParameters[moduleName]);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="
keywordflow">if</span> (instance == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Error creating Module instance for '"</span> + moduleName + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> instance;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span cl
ass="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="classmesos_1_1modules_1_1ModuleManager.html#a7f8ba7f0638cf5b05dc31ec3a0bf0e47"> 114</a></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1modules_1_1ModuleManager.html#a7f8ba7f0638cf5b05dc31ec3a0bf0e47">contains</a>(<span class="keyword">const</span> std::string& moduleName)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">synchronized</span> (mutex) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> (moduleBases.contains(moduleName) &&</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>
  moduleBases[moduleName]->kind == <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(kind<T>()));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// Returns all module names that have been loaded that implement the</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// specified interface 'T'. For example:</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">//</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">//
std::vector<std::string> modules = ModuleManager::find<Hook>();</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">//</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// Will return all of the module names for modules that implement</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// the Isolator interface.</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classmesos_1_1modules_1_1ModuleManager.html#a0d96d6d1cc268698b11db2fabcf2f9e3"> 130</a></span>  <span class="keyword">static</span> std::vector<std::string> <a class="code" href="classmesos_1_1modules_1_1
ModuleManager.html#a0d96d6d1cc268698b11db2fabcf2f9e3">find</a>()</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  std::vector<std::string> names;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">synchronized</span> (mutex) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>, <a class="code" href="structmesos_1_1modules_1_1ModuleBase.html">ModuleBase</a>* <a class="code" href="namespaceprocess.html#a373bd5e2bd8f2694e4589293af477854">base</a>, m
oduleBases) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (base-><a class="code" href="structmesos_1_1modules_1_1ModuleBase.html#af37d32c0c7e7964c8e2368f4224ce0b4">kind</a> == <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(kind<T>())) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  names.push_back(name);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> names;</div><div class="lin
e"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// Exposed just for testing so that we can unload a given</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// module and remove it from the list of ModuleBases.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classmesos_1_1modules_1_1ModuleManager.html#ad2d7eb58b991c00d8389287814e06fe4">unload</a>(<span class="keyword">const</span> std::string& moduleName);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno
"> 149</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> initialize();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Nothing></a> loadManifest(<span class="keyword">const</span> Modules& modules);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Nothing></a> verifyModule(</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> std::string& moduleName
,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">const</span> <a class="code" href="structmesos_1_1modules_1_1ModuleBase.html">ModuleBase</a>* moduleBase);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// Allow multiple calls to `load()` by verifying that the modules with same</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// name are indeed identical. Thus, multiple loadings of a module manifest</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// are harmless.</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Nothing></a> ve
rifyIdenticalModule(</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">const</span> std::string& libraryName,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">const</span> Modules::Library::Module& module,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">const</span> <a class="code" href="structmesos_1_1modules_1_1ModuleBase.html">ModuleBase</a>* <a class="code" href="namespaceprocess.html#a373bd5e2bd8f2694e4589293af477854">base</a>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keyword">static</span> std::mutex mutex;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="l
ineno"> 168</span>  <span class="keyword">static</span> <a class="code" href="classhashmap.html">hashmap<std::string, std::string></a> kindToVersion;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// Mapping from "module name" to the actual ModuleBase. If two</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// modules from different libraries have the same name then the last</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// one specified in the protobuf Modules will be picked.</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keyword">static</span> <a class="code" href="classhashmap.html">hashmap<std::string, ModuleBase*></a> mod
uleBases;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Module-specific command-line parameters.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">static</span> <a class="code" href="classhashmap.html">hashmap<std::string, Parameters></a> moduleParameters;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// A list of dynamic libraries to keep the object from getting</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// destructed.</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// NOTE: We do leak loade
d dynamic libraries. This is to allow</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// modules to make use of e.g., libprocess which otherwise could</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// lead to situations where libprocess (which we depend on ourself)</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// is unloaded before the destructor of below `static` is called.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// Unloading the dynamic library could then lead to the linker</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// attempting to unload the libprocess loaded from the module which</span></div><div class="line"><a name="l00186"></a><span cl
ass="lineno"> 186</span>  <span class="comment">// is not there anymore.</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">static</span> <a class="code" href="classhashmap.html">hashmap<std::string, DynamicLibrary*></a> dynamicLibraries;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// Module to library name mapping.</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">static</span> <a class="code" href="classhashmap.html">hashmap<std::string, std::string></a> moduleLibraries;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> };</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class=
"lineno"> 193</span> } <span class="comment">// namespace modules {</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#endif // __MODULE_MANAGER_HPP__</span></div><div class="ttc" id="synchronized_8hpp_html"><div class="ttname"><a href="synchronized_8hpp.html">synchronized.hpp</a></div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="classmesos_1_1modules_1_1ModuleManager_html_a7f8ba7f0638cf5b05dc31ec3a0bf0e47"><div class="ttname"><a href="classmesos_1_1modules_1_1ModuleManager.html#a7f8ba7f0638cf5b05dc31ec3a0bf0e47">mesos::modules::ModuleManager::contains</a></div><div class="ttdeci">static bool contains(const std::string &moduleName)</div><div class="ttdef"><b>Definition:</b> manager.hpp:114</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/net__cls_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/net__cls_8hpp_source.html b/content/api/latest/c++/net__cls_8hpp_source.html
index 48b20f1..704c2e7 100644
--- a/content/api/latest/c++/net__cls_8hpp_source.html
+++ b/content/api/latest/c++/net__cls_8hpp_source.html
@@ -57,7 +57,7 @@
<div class="ttc" id="namespacecgroups_html_aceb245d6ea6362ac1c2b1247556179d6"><div class="ttname"><a href="namespacecgroups.html#aceb245d6ea6362ac1c2b1247556179d6">cgroups::isolate</a></div><div class="ttdeci">Try< Nothing > isolate(const std::string &hierarchy, const std::string &cgroup, pid_t pid)</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1slave_1_1NetClsHandle_html_a3baa5f9ce5dbfc3a0eb7fbdec6fa1a29"><div class="ttname"><a href="structmesos_1_1internal_1_1slave_1_1NetClsHandle.html#a3baa5f9ce5dbfc3a0eb7fbdec6fa1a29">mesos::internal::slave::NetClsHandle::NetClsHandle</a></div><div class="ttdeci">NetClsHandle(uint16_t _primary, uint16_t _secondary)</div><div class="ttdef"><b>Definition:</b> net_cls.hpp:58</div></div>
<div class="ttc" id="resources_8hpp_html"><div class="ttname"><a href="resources_8hpp.html">resources.hpp</a></div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< uint16_t ></a></div></div>
<div class="ttc" id="src_2slave_2containerizer_2mesos_2isolators_2cgroups_2constants_8hpp_html"><div class="ttname"><a href="src_2slave_2containerizer_2mesos_2isolators_2cgroups_2constants_8hpp.html">constants.hpp</a></div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_html_acc816a5f127bb40e7d5464befda0a0a9"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave.html#acc816a5f127bb40e7d5464befda0a0a9">mesos::internal::slave::operator<<</a></div><div class="ttdeci">std::ostream & operator<<(std::ostream &stream, const MesosContainerizerProcess::State &state)</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/numify_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/numify_8hpp_source.html b/content/api/latest/c++/numify_8hpp_source.html
index 35c248a..cd9e25b 100644
--- a/content/api/latest/c++/numify_8hpp_source.html
+++ b/content/api/latest/c++/numify_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">numify.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="numify_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_NUMIFY_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_NUMIFY_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <boost/lexical_cast.hpp></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l0
0021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="error_8hpp.html">error.hpp</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="none_8hpp.html">none.hpp</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="option_8hpp.html">option.hpp</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="result_8hpp.html">result.hpp</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="strings_8hpp.html">strings.hpp</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26
</span> <span class="preprocessor">#include "<a class="code" href="try_8hpp.html">try.hpp</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681"> 29</a></span> <a class="code" href="classTry.html">Try<T></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="comment">// Since even with a `0x` prefix `boost::lexical_cast` cannot always</span></div
><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// cast all hexadecimal numbers on all platforms (parsing of some</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// floating point literals seems to work e.g., on macOS, but fails on</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// some Linuxes), we have to workaround this issue here. We also</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// process negative hexadecimal numbers `-0x` here to keep it</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// consistent with non-hexadecimal numbers.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> m
aybeHex = <span class="keyword">false</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"0x"</span>) || <a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"0X"</span>) ||</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"-0x"</span>) || <a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"-0X"</span>)) {</div><div clas
s="line"><a name="l00041"></a><span class="lineno"> 41</span>  maybeHex = <span class="keyword">true</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// We disallow hexadecimal floating point numbers.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(s, <span class="stringliteral">"."</span>) || <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(s, <span class="stringliteral">"p"</span>)) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class
="stringliteral">"Failed to convert '"</span> + s + <span class="stringliteral">"' to number"</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">try</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> boost::lexical_cast<T>(s);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> boost::bad_lexical_cast&) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Try to parse hex
adecimal numbers by hand if `boost::lexical_cast` failed.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (maybeHex) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  T result;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::stringstream ss;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Process negative hexadecimal numbers.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"-"</span>)) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ss << std::hex << s.substr(1);</div><di
v class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ss >> result;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// NOTE: Negating `result` is safe even if `T` is an unsigned</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// integer type, because the C++ standard defines the result</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// to be modulo 2^n in that case.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">//</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// numify<T>("-1") == std::numeric_limits<T>::max();</span></div><div class="line"><a name="l00065"></a><span class
="lineno"> 65</span>  <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Disabled unary negation warning for all types.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#pragma warning(disable:4146)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  result = -result;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocesso
r">#pragma warning(default:4146)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  ss << std::hex << s;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ss >> result;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Make sure we really hit the end of the string.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (!ss.fail() && ss.eof()) {</div><div class="line"><a name="l00080"></a><spa
n class="lineno"> 80</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to convert '"</span> + s + <span class="stringliteral">"' to number"</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno">
88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="numify_8hpp.html#a59b1d5f427c671cff74388396af9f6f6"> 90</a></span> <a class="code" href="classTry.html">Try<T></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* s)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> numify<T>(std::string(s));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line">
<a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="numify_8hpp.html#aa210fa1a1b3c16842ffbea356b35cafd"> 97</a></span> <a class="code" href="classResult.html">Result<T></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& s)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00100"></a><span
class="lineno"> 100</span>  <a class="code" href="classTry.html">Try<T></a> t = numify<T>(s.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> t.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">re
turn</span> <a class="code" href="classError.html">Error</a>(t.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#endif // __STOUT_NUMIFY_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</
a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="numify_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_NUMIFY_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_NUMIFY_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <boost/lexical_cast.hpp></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l0
0021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="error_8hpp.html">error.hpp</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="none_8hpp.html">none.hpp</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="option_8hpp.html">option.hpp</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="result_8hpp.html">result.hpp</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="strings_8hpp.html">strings.hpp</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26
</span> <span class="preprocessor">#include "<a class="code" href="try_8hpp.html">try.hpp</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681"> 29</a></span> <a class="code" href="classTry.html">Try<T></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="comment">// Since even with a `0x` prefix `boost::lexical_cast` cannot always</span></div
><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// cast all hexadecimal numbers on all platforms (parsing of some</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// floating point literals seems to work e.g., on macOS, but fails on</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// some Linuxes), we have to workaround this issue here. We also</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// process negative hexadecimal numbers `-0x` here to keep it</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// consistent with non-hexadecimal numbers.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> m
aybeHex = <span class="keyword">false</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"0x"</span>) || <a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"0X"</span>) ||</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"-0x"</span>) || <a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"-0X"</span>)) {</div><div clas
s="line"><a name="l00041"></a><span class="lineno"> 41</span>  maybeHex = <span class="keyword">true</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// We disallow hexadecimal floating point numbers.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(s, <span class="stringliteral">"."</span>) || <a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">strings::contains</a>(s, <span class="stringliteral">"p"</span>)) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class
="stringliteral">"Failed to convert '"</span> + s + <span class="stringliteral">"' to number"</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">try</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> boost::lexical_cast<T>(s);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> boost::bad_lexical_cast&) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Try to parse hex
adecimal numbers by hand if `boost::lexical_cast` failed.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (maybeHex) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  T result;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::stringstream ss;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Process negative hexadecimal numbers.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s, <span class="stringliteral">"-"</span>)) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  ss << std::hex << s.substr(1);</div><di
v class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ss >> result;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// NOTE: Negating `result` is safe even if `T` is an unsigned</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// integer type, because the C++ standard defines the result</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// to be modulo 2^n in that case.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">//</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// numify<T>("-1") == std::numeric_limits<T>::max();</span></div><div class="line"><a name="l00065"></a><span class
="lineno"> 65</span>  <span class="comment">//</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Disabled unary negation warning for all types.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#pragma warning(disable:4146)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  result = -result;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocesso
r">#pragma warning(default:4146)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  ss << std::hex << s;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  ss >> result;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Make sure we really hit the end of the string.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (!ss.fail() && ss.eof()) {</div><div class="line"><a name="l00080"></a><spa
n class="lineno"> 80</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to convert '"</span> + s + <span class="stringliteral">"' to number"</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno">
88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="numify_8hpp.html#a59b1d5f427c671cff74388396af9f6f6"> 90</a></span> <a class="code" href="classTry.html">Try<T></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* s)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> numify<T>(std::string(s));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line">
<a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="numify_8hpp.html#aa210fa1a1b3c16842ffbea356b35cafd"> 97</a></span> <a class="code" href="classResult.html">Result<T></a> <a class="code" href="numify_8hpp.html#a1ada38a2bf3389b131c6f50042634681">numify</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& s)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00100"></a><span
class="lineno"> 100</span>  <a class="code" href="classTry.html">Try<T></a> t = numify<T>(s.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> t.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">re
turn</span> <a class="code" href="classError.html">Error</a>(t.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#endif // __STOUT_NUMIFY_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</
a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
[39/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/filter_2internal_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/filter_2internal_8hpp_source.html b/content/api/latest/c++/filter_2internal_8hpp_source.html
index 8733395..c37b664 100644
--- a/content/api/latest/c++/filter_2internal_8hpp_source.html
+++ b/content/api/latest/c++/filter_2internal_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="filter_2internal_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a>
<span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//
distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __LINUX_ROUTING_FILTER_INTERNAL_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __LINUX_ROUTING_FILTER_INTERNAL_
HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <netlink/cache.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <netlink/errno.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <netlink/object.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <netlink/socket.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26<
/span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <netlink/route/classifier.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <netlink/route/link.h></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <netlink/route/tc.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <netlink/route/act/mirred.h></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <netlink/route/cls/basic.h></span></div><div class="line"><a
name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <netlink/route/cls/u32.h></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2libprocess_2include_2process_2shared_8hpp.html">process/shared.hpp</a>></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class
="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#inclu
de <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">linux/routing/handle.hpp</a>"</span></div><div class="line"><a name="l00052"></a><s
pan class="lineno"> 52</span> <span class="preprocessor">#include "<a class="code" href="internal_8hpp.html">linux/routing/internal.hpp</a>"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "<a class="code" href="action_8hpp.html">linux/routing/filter/action.hpp</a>"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "<a class="code" href="src_2linux_2routing_2filter_2filter_8hpp.html">linux/routing/filter/filter.hpp</a>"</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "<a class="code" href="filter_2handle_8hpp.html">linux/routing/filter/handle.hpp</a>"</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 5
7</span> <span class="preprocessor">#include "<a class="code" href="priority_8hpp.html">linux/routing/filter/priority.hpp</a>"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "<a class="code" href="link_2internal_8hpp.html">linux/routing/link/internal.hpp</a>"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">namespace </span><a class="code" href="namespacerouting.html">routing</a> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00064"></a><span class="lineno
"><a class="line" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9902"> 64</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(<span class="keyword">struct</span> rtnl_cls* cls)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  rtnl_cls_put(cls);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">namespace </span><a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a> {</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespacerouting_1_
1filter_1_1internal.html"> 70</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// Helpers for {en}decoding.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"></span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// Forward declaration. Each type of classifier needs to implement</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// this function to encode itself into the libnl filter (rtnl_cls).</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">template</span> <<span class="keyword">typen
ame</span> Classifier></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#af143a877c566cca8dacc77d3b64f3372">encode</a>(</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_cls></a>& cls,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> Classifier& classifier);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// Forward declaration. Each type of classifier needs to implement</span
></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// this function to decode itself from the libnl filter (rtnl_cls).</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Returns None if the libnl filter does not match the type of the</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// classifier.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Classifier></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <a class="code" href="classResult.html">Result<Classifier></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a584df149d400373b0ed7c48c1b07cecd">decode</a>(<span class="keyword">const</span> <a class="code" href="classrouti
ng_1_1Netlink.html">Netlink<struct rtnl_cls></a>& cls);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Attaches a redirect action to the libnl filter (rtnl_cls).</span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f"> 93</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct
rtnl_cls></a>& cls,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1action_1_1Redirect.html">action::Redirect</a>& <a class="code" href="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca">redirect</a>)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link =</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="namespacerouting_1_1link_1_1internal.html#a01998838b3ff4f3123f42927f7f54738">link::internal::get</a>(redirect.<a class="code" href="structrouting_1_1action_1_1Redirect.html#a0e300417a11c82969cd5aa5c9a336fa3">link</a>);</div><div class="line"><a name="l00099"></a><span class="lineno"
> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Link '"</span>
+ redirect.<a class="code" href="structrouting_1_1action_1_1Redirect.html#a0e300417a11c82969cd5aa5c9a336fa3">link</a> + <span class="stringliteral">"' is not found"</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// TODO(jieyu): Note that currently, we don't use Netlink for 'act'</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// because libnl has a refcount issue for rtnl_act. Clean this up</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// once the bug is fixed in libnl.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">struct
</span>rtnl_act* act = rtnl_act_alloc();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (act == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to allocate a libnl action (rtnl_act)"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Set the kind of the action to 'mirred'. The kind 'mirred' stands</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// for mirror or redirect actions.</span>
</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_tc_set_kind(TC_CAST(act), <span class="stringliteral">"mirred"</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  rtnl_act_put(act);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="stringliteral">"Failed to set the kind of the action: "</span> +</div><div class="line"><a name="l00121"></a><span class="lineno"
> 121</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  rtnl_mirred_set_ifindex(act, rtnl_link_get_ifindex(link-><a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  rtnl_mirred_set_action(act, TCA_EGRESS_REDIR);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  rtnl_mirred_set_policy(act, TC_ACT_STOLEN);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1modules.html#a70
163bdea2fe39ef5b798a7d7ee0c220">kind</a> = rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span> (kind == <span class="stringliteral">"basic"</span>) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  error = rtnl_basic_add_action(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), act);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  rtnl_act_put(act);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Er
ror</a>(std::string(nl_geterror(error)));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (kind == <span class="stringliteral">"u32"</span>) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  error = rtnl_u32_add_action(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), act);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  rtnl_act_put(act);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error<
/a>(std::string(nl_geterror(error)));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Automatically set the 'terminal' flag for u32 filters if a</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// redirect action is attached.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  error = rtnl_u32_set_cls_terminal(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <s
pan class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="stringliteral">"Failed to set the terminal flag: "</span> +</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  rtnl_act_put(act);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unsupported classifier kind: "</span> + kind);</div><div class="line"
><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// Attaches a mirror action to the libnl filter (rtnl_cls).</span></div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#a8d4c16f68a968cea2dc98e2a8226913c"> 160</a></span> <span class="keyword">inline</span> <a class="code" h
ref="classTry.html">Try<Nothing></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_cls></a>& cls,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1action_1_1Mirror.html">action::Mirror</a>& mirror)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a> = rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe
5490b33b471783504b5f89e">get</a>()));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& _link, mirror.<a class="code" href="structrouting_1_1action_1_1Mirror.html#a1b3c67466ff6b45287f384ae3c5b6807">links</a>) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link = <a class="code" href="namespacerouting_1_1link_1_1internal.html#a01998838b3ff4f3123f42927f7f54738">link::internal::get</a>(_link);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00169
"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Link '"</span> + _link + <span class="stringliteral">"' is not found"</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="l
ine"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// TODO(jieyu): Note that currently, we don't use Netlink for</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// 'act' because libnl has a refcount issue for rtnl_act. Clean</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// this up once libnl fixes the bug.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">struct </span>rtnl_act* act = rtnl_act_alloc();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span> (act == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <a class="code" href="classError.ht
ml">Error</a>(<span class="stringliteral">"Failed to allocate a libnl action (rtnl_act)"</span>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_tc_set_kind(TC_CAST(act), <span class="stringliteral">"mirred"</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  rtnl_act_put(act);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <a cl
ass="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="stringliteral">"Failed to set the kind of the action: "</span> +</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  rtnl_mirred_set_ifindex(act, rtnl_link_get_ifindex(link-><a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()));</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  rtnl_mirred_set_action(act, TCA_EGRESS_MIRROR);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  rtnl_mirred_set
_policy(act, TC_ACT_PIPE);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (kind == <span class="stringliteral">"basic"</span>) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  error = rtnl_basic_add_action(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), act);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  rtnl_act_put(act);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(std::string(nl_geterror(error)));</div><di
v class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (kind == <span class="stringliteral">"u32"</span>) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  error = rtnl_u32_add_action(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), act);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  rtnl_act_put(act);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(std::string(nl_geterror(error)));<
/div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  rtnl_act_put(act);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unsupported classifier kind: "</span> + kind);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// Automatically set the 'terminal
' flag for u32 filters if a mirror</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// action is attached.</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> (kind == <span class="stringliteral">"u32"</span>) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_u32_set_cls_terminal(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">
return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="stringliteral">"Failed to set the terminal flag: "</span> +</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="li
ne"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment">// Attaches a terminal action to the libnl filter (rtnl_cls). It will</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment">// stop the packet from being passed to the next filter if a match is</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment">// found. This is only applied to u32 filters (which can match any</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// 32-bit value in a packet). This function will return error if the</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// user tries to attach a terminal action to a non-u32 filter.</span></div><div class="line"><a name="l
00232"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#a4147e528ed5b27b16f0afd9eedc5085b"> 232</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_cls></a>& cls,</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1action_1_1Terminal.html">action::Terminal</a>& terminal)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">
const</span> std::string <a class="code" href="namespacemesos_1_1modules.html#a70163bdea2fe39ef5b798a7d7ee0c220">kind</a> = rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (kind != <span class="stringliteral">"u32"</span>) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot attach terminal action to a non-u32 filter."</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordtype">int
</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_u32_set_cls_terminal(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="stringliteral">"Failed to set the terminal flag: "</span> +</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l0024
7"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="comment">// Attaches an action to the libnl filter (rtnl_cls). This function</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="comment">// essentially delegates the call to the corresponding attach function</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="comment">// depending on the type of the action.</span><
/div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#a65ca143d4e951198b3ed448d5696cc2a"> 255</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_cls></a>& cls,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Shared.html">process::Shared<action::Action></a>& action)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> {</div><div class="line"><a name="l00259"></a><span class="lineno"> 2
59</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1action_1_1Redirect.html">action::Redirect</a>* <a class="code" href="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca">redirect</a> =</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">dynamic_cast<</span><span class="keyword">const </span><a class="code" href="structrouting_1_1action_1_1Redirect.html">action::Redirect</a>*<span class="keyword">></span>(action.<a class="code" href="classprocess_1_1Shared.html#a1826ec84528910fcec813d35993a1fd4">get</a>());</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span> (redirect != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">return</span> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3
ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(cls, *redirect);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1action_1_1Mirror.html">action::Mirror</a>* mirror =</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">dynamic_cast<</span><span class="keyword">const </span><a class="code" href="structrouting_1_1action_1_1Mirror.html">action::Mirror</a>*<span class="keyword">></span>(action.<a class="code" href="classprocess_1_1Shared.html#a1826ec84528910fcec813d35993a1fd4">get</a>());</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span> (mirror != <span class="keyword">nullptr</span>
) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(cls, *mirror);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1action_1_1Terminal.html">action::Terminal</a>* terminal =</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">dynamic_cast<</span><span class="keyword">const </span><a class="code" href="structrouting_1_1action_1_1Terminal.html">action::Terminal</a>*<span class="keyword">></span>(action.<a class="code" href="classprocess_1_1Shared.html#a1826ec8
4528910fcec813d35993a1fd4">get</a>());</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span> (terminal != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(cls, *terminal);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unsupported action type"</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> }</div><div class="line"><a
name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="comment">// Generates the handle for the given filter on the link. Returns none</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="comment">// if we decide to let the kernel choose the handle.</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Classifier></div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#a7ec08111c4aad6403bc92588f71bc3a6"> 284</a></span> <a class="code" href="classResult.html">Result<U32Handle></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a7ec08
111c4aad6403bc92588f71bc3a6">generateU32Handle</a>(</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>& link,</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1filter_1_1Filter.html">Filter<Classifier></a>& <a class="code" href="namespaceprocess.html#a3054d5443603436a6315f210a412cbbc">filter</a>)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// If the user does not specify a priority, we have no choice but</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// let the kernel choose the handle because
we do not know the</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// 'htid' that is associated with that priority.</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span> (filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a4092907cf26633122a73f1f6e2f5dea1">priority</a>.isNone()) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// Scan all the filters attached to the given parent on the link.</span></div><div class="lin
e"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a> = <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing::socket</a>();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span> (socket.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(socket.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <
/div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// Dump all the libnl filters (i.e., rtnl_cls) attached to the given</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="comment">// parent on the link.</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">struct </span>nl_cache* c = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_cls_alloc_cache(</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  socket-><a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00306"></a><span cla
ss="lineno"> 306</span>  rtnl_link_get_ifindex(link.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()),</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a1d9edaaa4c966eb667709552529ec229">parent</a>.get(),</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  &c);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="stringliteral">"Failed
to get filter info from kernel: "</span> +</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct nl_cache></a> cache(c);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">// A map from priority to the corresponding 'htid'.</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="classhashmap.html">hashmap<uint16_t, uint32_t></a> htids;</div><div class="line"><a name="l00320"><
/a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">// A map from 'htid' to a set of already used nodes.</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="classhashmap.html">hashmap<uint32_t, hashset<uint32_t></a>> nodes;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">for</span> (<span class="keyword">struct</span> nl_object* o = nl_cache_get_first(cache.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  o != <span class="keyword">nullptr</span>; o = nl_cache_get_next(o)) {</div><div class="line"><a name="l00326"></a><span c
lass="lineno"> 326</span>  <span class="keyword">struct </span>rtnl_cls* cls = (<span class="keyword">struct </span>rtnl_cls*) o;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="comment">// Only look at u32 filters. For other type of filters, their</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// handles are generated by the kernel correctly.</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (rtnl_tc_get_kind(TC_CAST(cls)) == std::string(<span class="stringliteral">"u32"</span>)) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classrouting_1_1filter_1_1U32Handle.html">U32Handle</a> handle(rtnl_tc_get_handle(TC_CAST(cls)
));</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  htids[rtnl_cls_get_prio(cls)] = handle.<a class="code" href="classrouting_1_1filter_1_1U32Handle.html#ab44fcf8caf8121f8873dc78702f3ca78">htid</a>();</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  nodes[handle.<a class="code" href="classrouting_1_1filter_1_1U32Handle.html#ab44fcf8caf8121f8873dc78702f3ca78">htid</a>()].insert(handle.<a class="code" href="classrouting_1_1filter_1_1U32Handle.html#a905f16da1073dbbced85293a1ed2a39f">node</a>());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</sp
an>  <span class="comment">// If this filter has a new priority, we need to let the kernel</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="comment">// decide the handle because we don't know which 'htid' this</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">// priority will be associated with.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">if</span> (!htids.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a4092907cf26633122a73f1f6e2f5dea1">priority</a>->get())) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name
="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// NOTE: By default, kernel will choose to use divisor 1, which</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// means all filters will be in hash bucket 0. Also, kernel assigns</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// node id starting from 0x800 by default. Here, we keep the same</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="comment">// semantics as kernel.</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  uint32_t htid = htids[filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a40
92907cf26633122a73f1f6e2f5dea1">priority</a>->get()];</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">for</span> (uint32_t node = 0x800; node <= 0xfff; node++) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span> (!nodes[htid].<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">contains</a>(node)) {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> <a class="code" href="classrouting_1_1filter_1_1U32Handle.html">U32Handle</a>(htid, 0x0, node);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a
><span class="lineno"> 356</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"No available handle exists"</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="comment">// Encodes a filter (in our representation) to a libnl filter</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="comment">// (rtnl_cls). We use template here so that it works for any type of</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="comment">// classifier.</span></div><div class="line"><a name="l00363"></a><span class
="lineno"> 363</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Classifier></div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#a7224102d55d4a109145a2e41160828af"> 364</a></span> <a class="code" href="classTry.html">Try<Netlink<struct rtnl_cls></a>> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a7224102d55d4a109145a2e41160828af">encodeFilter</a>(</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>& link,</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">const</span> <a class="code" href="structrouting_1_1filter_1_1Filter.html">Filter<Classifier></a>& <a class="code" href="namespaceprocess.html#a
3054d5443603436a6315f210a412cbbc">filter</a>)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">struct </span>rtnl_cls* c = rtnl_cls_alloc();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span> (c == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to allocate a libnl filter (rtnl_cls)"</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href
="classrouting_1_1Netlink.html">Netlink<struct rtnl_cls></a> cls(c);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  rtnl_tc_set_link(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), link.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  rtnl_tc_set_parent(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a1d9edaaa4c966eb667709552529ec229">parent</a>.get());</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="comme
nt">// Encode the priority.</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span> (filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a4092907cf26633122a73f1f6e2f5dea1">priority</a>.isSome()) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  rtnl_cls_set_prio(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a4092907cf26633122a73f1f6e2f5dea1">priority</a>->get());</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">// Encode the classifier using the classifier specific function.</span></div><div class="line"><a na
me="l00384"></a><span class="lineno"> 384</span>  <a class="code" href="classTry.html">Try<Nothing></a> encoding = <a class="code" href="namespacerouting_1_1filter_1_1internal.html#af143a877c566cca8dacc77d3b64f3372">encode</a>(cls, filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#ad87174eef00793486123325982027d12">classifier</a>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (encoding.isError()) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to encode the classifier "</span> + encoding.error());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389">
</a><span class="lineno"> 389</span>  <span class="comment">// Attach actions to the libnl filter.</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classprocess_1_1Shared.html">process::Shared<action::Action></a>& action, filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a86f603caae29c42efdc6184e01516e90">actions</a>) {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="classTry.html">Try<Nothing></a> attaching = <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(cls, action);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">if</span> (attaching.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError<
/a>()) {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to attach an action "</span> + attaching.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// Encode the handle.</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span> (filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#acfe994fed2fd67ec52ddc877604a8d5f">handle</a>.isSome
()) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  rtnl_tc_set_handle(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#acfe994fed2fd67ec52ddc877604a8d5f">handle</a>->get());</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="comment">// NOTE: This is a workaround for MESOS-1617. Normally, if the</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="comment">// user does not specify the handle for a filter, the kernel will</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// generate one automatically. However, for u32 filt
ers, the</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// existing kernel is buggy in the sense that it will generate a</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="comment">// handle that is already used by some other u32 filter (see the</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">// ticket for details). To address that, we explicitly set the</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="comment">// handle of the filter by picking an unused handle.</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="comment">// TODO(jieyu): Revisit this once the kernel bug is fixed.</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span cla
ss="keywordflow">if</span> (rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) == std::string(<span class="stringliteral">"u32"</span>)) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="classResult.html">Result<U32Handle></a> handle = <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a7ec08111c4aad6403bc92588f71bc3a6">generateU32Handle</a>(link, filter);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span> (handle.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to find an unused u32 h
andle: "</span> + handle.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="comment">// If 'handle' is none, let the kernel choose the handle.</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span> (handle.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  rtnl_tc_set_handle(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()), handle-><a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ad
a4d412">get</a>());</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// Set the classid if needed.</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span> (filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a2a214d608fe4304177f60a66e0aba9a6">classid</a>.isSome()) {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span> (rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5
f89e">get</a>())) == std::string(<span class="stringliteral">"u32"</span>)) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  rtnl_u32_set_classid(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a2a214d608fe4304177f60a66e0aba9a6">classid</a>->get());</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) == std::string(<span class="stringliteral">"basic"</span>)) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  rtnl_basic_set_target(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>
(), filter.<a class="code" href="structrouting_1_1filter_1_1Filter.html#a2a214d608fe4304177f60a66e0aba9a6">classid</a>->get());</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">return</span> cls;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span> }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="comment">// Decodes a libnl filter (rtnl_cls) to our filter representation.</span></div><div class="line"><a name="l00436"></a>
<span class="lineno"> 436</span> <span class="comment">// Returns None if the libnl filter does not match the specified</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="comment">// classifier type. We use template here so that it works for any type</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment">// of classifier.</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Classifier></div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#ac09b47f64cdfd8d7e25671b7c1f657f8"> 440</a></span> <a class="code" href="classResult.html">Result<Filter<Classifier></a>> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#ac09b47f64cdfd8d7e25671b7c1f657f8">d
ecodeFilter</a>(<span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_cls></a>& cls)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// If the handle of the libnl filer is 0, it means that it is an</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="comment">// internal filter, therefore is definitely not created by us.</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> (rtnl_tc_get_handle(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) == 0) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">return</span> <a class="code" href="
structNone.html">None</a>();</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// Decode the parent.</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="classrouting_1_1Handle.html">Handle</a> parent(rtnl_tc_get_parent(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())));</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// Decode the priority. If the priority is not specified by the</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// user
, kernel will assign a priority to the filter. So we should</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// always have a valid priority here.</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="classrouting_1_1filter_1_1Priority.html">Priority</a> priority(rtnl_cls_get_prio(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// Decode the handle. If the handle is not specified by the user,</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// kernel will assign a handle to the filter. So we should always</span></div><div class="line"><a name="l00458"></a
><span class="lineno"> 458</span>  <span class="comment">// have a valid handle here.</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classrouting_1_1Handle.html">Handle</a> handle(rtnl_tc_get_handle(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())));</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">// Decode the classifier using a classifier specific function.</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="classResult.html">Result<Classifier></a> classifier = decode<Classifier>(cls);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span> (classifier.isError()) {</div><d
iv class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to decode the classifier: "</span> + classifier.error());</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (classifier.isNone()) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="classOption.html">Option<Handle></a> <a class="code" href="namespacecgroups_1
_1net__cls.html#a4be3a8048a2534d857fc1ba1aac7c5ea">classid</a>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span> (rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) == std::string(<span class="stringliteral">"u32"</span>)) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  uint32_t _classid;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">if</span> (rtnl_u32_get_classid(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), &_classid) == 0) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  classid = _classid;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"><
/a><span class="lineno"> 475</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rtnl_tc_get_kind(TC_CAST(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>())) == std::string(<span class="stringliteral">"basic"</span>)) {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  classid = rtnl_basic_get_target(cls.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>());</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// TODO(jieyu): Decode all the actions attached to the filter.</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">/
/ Currently, libnl does not support that (but will support that in</span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="comment">// the future).</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">return</span> <a class="code" href="structrouting_1_1filter_1_1Filter.html">Filter<Classifier></a>(parent,</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  classifier.get(),</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  priority,</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  handle,</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="namespacecgroups_1_1net__cls.html#a4be3a8048a2534d857fc1ba1aac7c5ea
">classid</a>);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="comment">// Helpers for internal APIs.</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment"></span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="comment">// Returns all the libnl filters (rtnl_cls) attached to the given</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="comment">// parent on the link.</span></div><div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="namespacerouting_1_1filter_1_1internal.html#ade9782606fb459eb486de4c77b2c0c8a"> 495</a></span> <span class="keyword">inline</span> <a class="code" href
="classTry.html">Try<std::vector<Netlink<struct rtnl_cls></a>>> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#ade9782606fb459eb486de4c77b2c0c8a">getClses</a>(</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>& link,</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keyword">const</span> <a class="code" href="classrouting_1_1Handle.html">Handle</a>& parent)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a> = <a class="code" href="namespacerouting
.html#aee51d4e36a57bab7d6ada56e15467370">routing::socket</a>();</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span> (socket.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(socket.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> </div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// Dump all the libnl filters (i.e., rtnl_cls) attached to the given</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span cla
ss="comment">// parent on the link.</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">struct </span>nl_cache* c = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_cls_alloc_cache(</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  socket-><a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  rtnl_link_get_ifindex(link.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>()),</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  parent.<a class="code" href
="classrouting_1_1Handle.html#aaaf5d48afa385557421c29db03c27caf">get</a>(),</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  &c);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="stringliteral">"Failed to get filter info from kernel: "</span> +</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l0
0518"></a><span class="lineno"> 518</span> </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct nl_cache></a> cache(c);</div><div class="line"><a n
<TRUNCATED>
[08/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/touch_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/touch_8hpp_source.html b/content/api/latest/c++/touch_8hpp_source.html
index f012dfe..fe6fa16 100644
--- a/content/api/latest/c++/touch_8hpp_source.html
+++ b/content/api/latest/c++/touch_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="touch_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_TOUCH_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_TOUCH_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="close_8hpp.html">stout/o
s/close.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="exists_8hpp.html">stout/os/exists.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="open_8hpp.html">stout/os/open.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="utime_8hpp.html">stout/os/utime.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="pre
processor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="namespaceos.html#a63be913dceea50b05a9c0ab845bd43c2"> 32</a></span> <span c
lass="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a63be913dceea50b05a9c0ab845bd43c2">touch</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a>(path)) {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="classTry.html">Try<int_fd></a> fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  path,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&
#160; O_RDWR | O_CREAT,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a90d7514882640a8cd7b8da14138103b7">S_IROTH</a>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span> (fd.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> 
<span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to open file: "</span> + fd.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comme
nt">// Update the access and modification times.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a818327458964860a86fc8964e4795b4d">os::utime</a>(path);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif // __STOUT_OS_TOUCH_HPP__</span></div><div class="ttc" id="namespaceos_html_a63be913dceea50b05a9c0ab845bd43c2"><div class="ttname"><a h
ref="namespaceos.html#a63be913dceea50b05a9c0ab845bd43c2">os::touch</a></div><div class="ttdeci">Try< Nothing > touch(const std::string &path)</div><div class="ttdef"><b>Definition:</b> touch.hpp:32</div></div>
<div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="namespaceos_html_a69b3969276ffa4cb698b9431ee43bd7c"><div class="ttname"><a href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a></div><div class="ttdeci">bool exists(const std::string &path)</div><div class="ttdef"><b>Definition:</b> exists.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a55fad1c3746e1b8a6a00c10998e91d91"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a></div><div class="ttdeci">const mode_t S_IRGRP</div><div class="ttdef"><b>Definition:</b> windows.hpp:313</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="exists_8hpp_html"><div class="ttname"><a href="exists_8hpp.html">exists.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/try_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/try_8hpp_source.html b/content/api/latest/c++/try_8hpp_source.html
index 60b4326..e51fe67 100644
--- a/content/api/latest/c++/try_8hpp_source.html
+++ b/content/api/latest/c++/try_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">try.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="try_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></d
iv><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><
a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_TRY_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_TRY_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <assert.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class=
"lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="some_8hpp.html">stout/some.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// This class can represent only one of these states at a time:</span></div><div class="line
"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// 1) A value of T.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// 2) An error state, with a corresponding error string.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Calling 'isSome' will return true if it stores a value, in which</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// case calling 'get' will return a constant reference to the T</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// stored. Calling 'isError' will return true if it stores an error,</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// in which case calling 'error' will r
eturn the error string.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E = Error></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="classTry.html">Try</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  static_assert(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::is_base_of<Error, E>::value,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="stringliteral">"An error type must be, or be
inherited from 'Error'."</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classTry.html#ac6304ce9dfd0042726f8b813ac64f06a"> 41</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try</a> <a class="code" href="classTry.html#ac6304ce9dfd0042726f8b813ac64f06a">some</a>(<span class="keyword">const</span> T& t) { <span class="keywordflow">return</span> <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(t); }</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7"> 42</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try</a> <a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>(<span class="keyword">const</span> E& e) { <sp
an class="keywordflow">return</span> <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(e); }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff"> 44</a></span>  <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(<span class="keyword">const</span> T& t)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(t)) {}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">template</span> <</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">ty
pename</span> U,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if<</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::is_constructible<T, const U&>::value><a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">::type</a>></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classTry.html#a2fa050bcf6cf16a616bec68abf676973"> 51</a></span>  <a class="code" href="classTry.html#a2fa050bcf6cf16a616bec68abf676973">Try</a>(<span class="keyword">const</span> U& u) : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(u)) {}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class
="line" href="classTry.html#ae0e226aa8c3c77673411edf615e97c2d"> 53</a></span>  <a class="code" href="classTry.html#ae0e226aa8c3c77673411edf615e97c2d">Try</a>(<span class="keyword">const</span> E& <a class="code" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7">error</a>) : error_(error) {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classTry.html#aeba30ad324a8fb30fe0e348e4eac181c"> 55</a></span>  <a class="code" href="classTry.html#aeba30ad324a8fb30fe0e348e4eac181c">Try</a>(T&& t)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<a class="code" href="namespacestd.html">std</a>::move(t))) {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a na
me="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// We don't need to implement these because we are leveraging</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Option<T>.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try</a>& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(<a class="code" href="classTry.html">Try</a>&& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="li
neno"> 63</span>  <a class="code" href="classTry.html#aa120fb652c6994a7a2ddc5fcc77b806f">~Try</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="classTry.html">Try</a>& <a class="code" href="classTry.html#aa61bbfa75f0feb3ccc93846f296145d8">operator=</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try</a>& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classTry.html">Try</a>& <a class="code" href="classTry.html#aa61bbfa75f0feb3ccc93846f296145d8">operator=</a>(<a class="code" href="classTry.html">Try</a>&& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>
0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// 'isSome' and 'isError' are mutually exclusive. They correspond</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// to the underlying state of the Option.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc"> 70</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.isSome(); }</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classTry.html#a0b98f95163b8a38daafd1651b043a276"> 71</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a27
6">isError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.isNone(); }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5"> 73</a></span>  T& <span class="keyword">get</span>() & { <span class="keywordflow">return</span> <span class="keyword">get</span>(*this); }</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classTry.html#a6279f363f225df7d23450efed4f6266b"> 74</a></span>  <span class="keyword">const</span> T& <span class="keyword">get</span>() <span class="keyword">const</span> & { <span class="keywordflow">return</span> <span class="keyword">get</span>(*this); }</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classTry.html#a130c5793fda00481e0dd08815a5e1a3b"> 75</a><
/span>  T&& <span class="keyword">get</span>() && { <span class="keywordflow">return</span> <span class="keyword">get</span>(std::move(*<span class="keyword">this</span>)); }</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classTry.html#aa7fc5faedc2dc83838bf5a58bcdd1731"> 76</a></span>  <span class="keyword">const</span> T&& <span class="keyword">get</span>() <span class="keyword">const</span> && { <span class="keywordflow">return</span> <span class="keyword">get</span>(std::move(*<span class="keyword">this</span>)); }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classTry.html#aa1a9b7b5155868454bf85971cfea4676"> 78</a></span>  <span class="keyword">const</span> T* <a class="code" href="classTry.html#aa1a9b7b5155868454bf85971cfea4676">operator-></a>()<span class="ke
yword"> const </span>{ <span class="keywordflow">return</span> &<span class="keyword">get</span>(); }</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classTry.html#abb420e7f8f439f0cf4083489c4662d7b"> 79</a></span>  T* <a class="code" href="classTry.html#abb420e7f8f439f0cf4083489c4662d7b">operator-></a>() { <span class="keywordflow">return</span> &<span class="keyword">get</span>(); }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// NOTE: This function is intended to return the error of type `E`.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// However, we return a `std::string` if `E` == `Error` since that's what it</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span
class="comment">// used to return, and it's the only data that `Error` holds anyway.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">const</span> <span class="keyword">typename</span> std::conditional<</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7"> 85</a></span>  std::is_same<E, Error>::value, std::string, E><a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">::type</a>& <a class="code" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7">error</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  assert(data.isNone());</div><div class="line"><a name="l00088"></a><spa
n class="lineno"> 88</span>  assert(error_.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> error_impl(error_.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string& error_impl(<span class="keyword">const</span> <a class="code" href="classError.html">Error</a>& err) { <span class="keywordflow">return</span> err.<a class
="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> Self></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">static</span> <span class="keyword">auto</span> <span class="keyword">get</span>(Self&& <span class="keyword">self</span>) -> decltype(std::forward<Self>(<span class="keyword">self</span>).data.get())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span> (!<span class="keyword">self</span>.data.isSome()) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99<
/span>  assert(<span class="keyword">self</span>.error_.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Try::get() but state == ERROR: "</span> + <span class="keyword">self</span>.error_->message);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> std::forward<Self>(<span class="keyword">self</span>).data.get();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</spa
n>  <span class="keyword">template</span> <<span class="keyword">typename</span> Err></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">static</span> <span class="keyword">const</span> Err& error_impl(<span class="keyword">const</span> Err& err) { <span class="keywordflow">return</span> err; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// We leverage Option<T> to avoid dynamic allocation of T. This</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// means that the storage for T will be included in this object</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// (Try<T>). Since Option<T> keeps track of whether a value
is</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// stored, we just ask it when we want to know whether we are</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// storing a value or an error. Another advantage of leveraging</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Option<T> is that it takes care of all the manual construction</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// and destruction. This makes the code for Try<T> really simple!</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classOption.html">Option<T></a> data;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="cla
ssOption.html">Option<E></a> error_;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#endif // __STOUT_TRY_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="try_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></d
iv><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><
a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_TRY_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_TRY_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <assert.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class=
"lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="some_8hpp.html">stout/some.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// This class can represent only one of these states at a time:</span></div><div class="line
"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// 1) A value of T.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// 2) An error state, with a corresponding error string.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Calling 'isSome' will return true if it stores a value, in which</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// case calling 'get' will return a constant reference to the T</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// stored. Calling 'isError' will return true if it stores an error,</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// in which case calling 'error' will r
eturn the error string.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E = Error></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="classTry.html">Try</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  static_assert(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::is_base_of<Error, E>::value,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="stringliteral">"An error type must be, or be
inherited from 'Error'."</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classTry.html#ac6304ce9dfd0042726f8b813ac64f06a"> 41</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try</a> <a class="code" href="classTry.html#ac6304ce9dfd0042726f8b813ac64f06a">some</a>(<span class="keyword">const</span> T& t) { <span class="keywordflow">return</span> <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(t); }</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7"> 42</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try</a> <a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>(<span class="keyword">const</span> E& e) { <sp
an class="keywordflow">return</span> <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(e); }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff"> 44</a></span>  <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(<span class="keyword">const</span> T& t)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(t)) {}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">template</span> <</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">ty
pename</span> U,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">typename</span> = <span class="keyword">typename</span> std::enable_if<</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::is_constructible<T, const U&>::value><a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">::type</a>></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classTry.html#a2fa050bcf6cf16a616bec68abf676973"> 51</a></span>  <a class="code" href="classTry.html#a2fa050bcf6cf16a616bec68abf676973">Try</a>(<span class="keyword">const</span> U& u) : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(u)) {}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class
="line" href="classTry.html#ae0e226aa8c3c77673411edf615e97c2d"> 53</a></span>  <a class="code" href="classTry.html#ae0e226aa8c3c77673411edf615e97c2d">Try</a>(<span class="keyword">const</span> E& <a class="code" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7">error</a>) : error_(error) {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classTry.html#aeba30ad324a8fb30fe0e348e4eac181c"> 55</a></span>  <a class="code" href="classTry.html#aeba30ad324a8fb30fe0e348e4eac181c">Try</a>(T&& t)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  : data(<a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<a class="code" href="namespacestd.html">std</a>::move(t))) {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a na
me="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// We don't need to implement these because we are leveraging</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Option<T>.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try</a>& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classTry.html#a8e4688619adae0c7de86cbcae8b91eff">Try</a>(<a class="code" href="classTry.html">Try</a>&& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="li
neno"> 63</span>  <a class="code" href="classTry.html#aa120fb652c6994a7a2ddc5fcc77b806f">~Try</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="classTry.html">Try</a>& <a class="code" href="classTry.html#aa61bbfa75f0feb3ccc93846f296145d8">operator=</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try</a>& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classTry.html">Try</a>& <a class="code" href="classTry.html#aa61bbfa75f0feb3ccc93846f296145d8">operator=</a>(<a class="code" href="classTry.html">Try</a>&& that) = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>
0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// 'isSome' and 'isError' are mutually exclusive. They correspond</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// to the underlying state of the Option.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc"> 70</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.isSome(); }</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classTry.html#a0b98f95163b8a38daafd1651b043a276"> 71</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a27
6">isError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data.isNone(); }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5"> 73</a></span>  T& <span class="keyword">get</span>() & { <span class="keywordflow">return</span> <span class="keyword">get</span>(*this); }</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classTry.html#a6279f363f225df7d23450efed4f6266b"> 74</a></span>  <span class="keyword">const</span> T& <span class="keyword">get</span>() <span class="keyword">const</span> & { <span class="keywordflow">return</span> <span class="keyword">get</span>(*this); }</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classTry.html#a130c5793fda00481e0dd08815a5e1a3b"> 75</a><
/span>  T&& <span class="keyword">get</span>() && { <span class="keywordflow">return</span> <span class="keyword">get</span>(std::move(*<span class="keyword">this</span>)); }</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classTry.html#aa7fc5faedc2dc83838bf5a58bcdd1731"> 76</a></span>  <span class="keyword">const</span> T&& <span class="keyword">get</span>() <span class="keyword">const</span> && { <span class="keywordflow">return</span> <span class="keyword">get</span>(std::move(*<span class="keyword">this</span>)); }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classTry.html#aa1a9b7b5155868454bf85971cfea4676"> 78</a></span>  <span class="keyword">const</span> T* <a class="code" href="classTry.html#aa1a9b7b5155868454bf85971cfea4676">operator-></a>()<span class="ke
yword"> const </span>{ <span class="keywordflow">return</span> &<span class="keyword">get</span>(); }</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classTry.html#abb420e7f8f439f0cf4083489c4662d7b"> 79</a></span>  T* <a class="code" href="classTry.html#abb420e7f8f439f0cf4083489c4662d7b">operator-></a>() { <span class="keywordflow">return</span> &<span class="keyword">get</span>(); }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// NOTE: This function is intended to return the error of type `E`.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// However, we return a `std::string` if `E` == `Error` since that's what it</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span
class="comment">// used to return, and it's the only data that `Error` holds anyway.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">const</span> <span class="keyword">typename</span> std::conditional<</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7"> 85</a></span>  std::is_same<E, Error>::value, std::string, E><a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">::type</a>& <a class="code" href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7">error</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  assert(data.isNone());</div><div class="line"><a name="l00088"></a><spa
n class="lineno"> 88</span>  assert(error_.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> error_impl(error_.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string& error_impl(<span class="keyword">const</span> <a class="code" href="classError.html">Error</a>& err) { <span class="keywordflow">return</span> err.<a class
="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> Self></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">static</span> <span class="keyword">auto</span> <span class="keyword">get</span>(Self&& <span class="keyword">self</span>) -> decltype(std::forward<Self>(<span class="keyword">self</span>).data.get())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span> (!<span class="keyword">self</span>.data.isSome()) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99<
/span>  assert(<span class="keyword">self</span>.error_.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Try::get() but state == ERROR: "</span> + <span class="keyword">self</span>.error_->message);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> std::forward<Self>(<span class="keyword">self</span>).data.get();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</spa
n>  <span class="keyword">template</span> <<span class="keyword">typename</span> Err></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">static</span> <span class="keyword">const</span> Err& error_impl(<span class="keyword">const</span> Err& err) { <span class="keywordflow">return</span> err; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// We leverage Option<T> to avoid dynamic allocation of T. This</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// means that the storage for T will be included in this object</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// (Try<T>). Since Option<T> keeps track of whether a value
is</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// stored, we just ask it when we want to know whether we are</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// storing a value or an error. Another advantage of leveraging</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Option<T> is that it takes care of all the manual construction</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// and destruction. This makes the code for Try<T> really simple!</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classOption.html">Option<T></a> data;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="cla
ssOption.html">Option<E></a> error_;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#endif // __STOUT_TRY_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="classTry_html_abb21343eabcba0eb0d88f13c4fbdf1f7"><div class="ttname"><a href="classTry.html#abb21343eabcba0eb0d88f13c4fbdf1f7">Try::error</a></div><div class="ttdeci">const std::conditional< std::is_same< E, Error >::value, std::string, E >::type & error() const </div><div class="ttdef"><b>Definition:</b> try.hpp:85</div></div>
@@ -69,7 +69,7 @@
<div class="ttc" id="classTry_html_aec4a11ddd3c036e889d90b7eb6258ba7"><div class="ttname"><a href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">Try::error</a></div><div class="ttdeci">static Try error(const E &e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
<div class="ttc" id="classTry_html_aeba30ad324a8fb30fe0e348e4eac181c"><div class="ttname"><a href="classTry.html#aeba30ad324a8fb30fe0e348e4eac181c">Try::Try</a></div><div class="ttdeci">Try(T &&t)</div><div class="ttdef"><b>Definition:</b> try.hpp:55</div></div>
<div class="ttc" id="classTry_html_ac6304ce9dfd0042726f8b813ac64f06a"><div class="ttname"><a href="classTry.html#ac6304ce9dfd0042726f8b813ac64f06a">Try::some</a></div><div class="ttdeci">static Try some(const T &t)</div><div class="ttdef"><b>Definition:</b> try.hpp:41</div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
<div class="ttc" id="some_8hpp_html_a2048f5c3b4ee79448c012cf6dc82a020"><div class="ttname"><a href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a></div><div class="ttdeci">_Some< typename std::decay< T >::type > Some(T &&t)</div><div class="ttdef"><b>Definition:</b> some.hpp:42</div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
<div class="ttc" id="classTry_html_a0b98f95163b8a38daafd1651b043a276"><div class="ttname"><a href="classTry.html#a0b98f95163b8a38daafd1651b043a276">Try::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> try.hpp:71</div></div>
[09/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/sysctl_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/sysctl_8hpp_source.html b/content/api/latest/c++/sysctl_8hpp_source.html
index c9305bd..7fc821d 100644
--- a/content/api/latest/c++/sysctl_8hpp_source.html
+++ b/content/api/latest/c++/sysctl_8hpp_source.html
@@ -52,12 +52,12 @@
<div class="title">sysctl.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="sysctl_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_SYSCTL_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_SYSCTL_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Only provide sysctl support for OS X and FreeBSD.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#if !defined(__APPLE__) && !defined(__FreeBSD__)</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/sysctl.hpp is only available on OS X and FreeBSD."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="prepro
cessor">#endif</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <sys/sysctl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <sys/time.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </di
v><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00
033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Provides an abstraction for getting system information via the</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// underlying 'sysctl' system call. You describe the sysctl</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// "Management Information Base" (MIB) name via the constructor, for</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// example, to describe "maximum n
umber of processes allowed in the</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// system" you would do:</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// os::sysctl(CTL_KERN, KERN_MAXPROC)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// To _retrieve_ the value you need to use one of the 'integer',</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// 'string', 'table', or 'time' methods to indicate the type of the</span></div><div class="line"><a name="l00046"></a
><span class="lineno"> 46</span> <span class="comment">// value being retrieved. For example:</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// Try<int> maxproc = os::sysctl(CTL_KERN, KERN_MAXPROC).integer();</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">//</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Note that the 'table' method requires specifying a length. If you</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// would like the length to be looked up dynamically you can just pass</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="com
ment">// None. Here's an example using 'table' that builds on above:</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// Try<vector<kinfo_proc>> processes =</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// os::sysctl(CTL_KERN, KERN_PROC, KERN_PROC_ALL).table(maxprox.get());</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// TODO(benh): Provide an 'integer(i)', 'string(s)', and 'table(t)' to</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// enable sett
ing system information.</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html"> 59</a></span> <span class="keyword">struct </span><a class="code" href="structos_1_1sysctl.html">sysctl</a></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Note that we create a constructor for each number of levels</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// because we can't pick a suitable default for unused levels (in</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// order to distinguish no value from some value) and while Option</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// w
ould solve that it could also cause people to use None which</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// we'd need to later handle as an error.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">explicit</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywo
rdtype">int</span> level2, <span class="keywordtype">int</span> level3);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3, <span class="keywordtype">int</span> level4);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3, <span class="keywordtype">int</span> level4, <span class="keywordtype">int</span> level5);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="structos_1_1sysctl.html#a8bad8be3072cd46efeacdf4e9fc7c2b
8">~sysctl</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Get system information as an integer.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">private</span>: <span class="keyword">struct </span>Integer; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Integer <a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">integer</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span cl
ass="comment">// Get system information as a string.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">string</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Get system information as a timeval.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classTry.html">Try<timeval></a> <a class="code" href="structos_1_1sysctl.html#aa0170ffd9e615f415e5cef7126831728">time</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno
"> 84</span>  <span class="comment">// Get system information as a table, optionally specifying a</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// length. Note that this function is lazy and will not actually</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// perform the syscall until you cast (implicitly or explicitly) a</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// 'Table' to a std::vector<T>. For example, to get the first 10</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// processes in the process table you can do:</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">//</span></div><div class="line"><a name="l00090"></a><span clas
s="lineno"> 90</span>  <span class="comment">// Try<std::vector<kinfo_proc>> processes =</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// os::sysctl(CTL_KERN, KERN_PROC, KERN_PROC_ALL).table(10);</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">//</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">private</span>: <span class="keyword">struct </span>Table; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  Table <a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>(<span class="keyword">const</span> <a class="code" href="cla
ssOption.html">Option<size_t></a>& length = <a class="code" href="structNone.html">None</a>()) <span class="keyword">const</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">struct </span>Integer</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Integer(<span class="keywordtype">int</span> _levels, <span class="keywordtype">int</span>* _name);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">template</span> <<span class="keyword">typename</spa
n> T></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">operator</span> <a class="code" href="classTry.html">Try<T></a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> levels;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">int</span>* name;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">struct </span>Table</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111
"></a><span class="lineno"> 111</span>  Table(<span class="keywordtype">int</span> _levels, <span class="keywordtype">int</span>* _name, <span class="keyword">const</span> <a class="code" href="classOption.html">Option<size_t></a>& _length);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">operator</span> <a class="code" href="classTry.html">Try<std::vector<T></a>>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> levels;</div><div class="line"><a n
ame="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">int</span>* name;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classOption.html">Option<size_t></a> length;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> levels;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">int</span>* name;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> };</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div cla
ss="line"><a name="l00126"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40"> 126</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  : levels(1), name(new int[levels])</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  name[0] = level1;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="structos_1_1s
ysctl.html#a86356cee57ee889e8353fc488a5e61a1"> 133</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  : levels(2), name(new int[levels])</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  name[0] = level1;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  name[1] = level2;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"
></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a3341cabf86d3585a12fb74000971a2e6"> 141</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  : levels(3), name(new int[levels])</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  name[0] = level1;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  name[1] = level2;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  name[2] = level3;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> 
}</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#acce1acf3d6dfb33d4d06dfe2ee09169b"> 150</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3, <span class="keywordtype">int</span> level4)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  : levels(4), name(new int[levels])</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  name[0] = level1;</div><div class="line"><a name="l00
154"></a><span class="lineno"> 154</span>  name[1] = level2;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  name[2] = level3;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  name[3] = level4;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#aae16684fca2b68f7ae4c998cee5f6f7e"> 160</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">int</span> level1,</div><div class="line"><a name="l
00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">int</span> level2,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">int</span> level3,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">int</span> level4,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">int</span> level5)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  : levels(5), name(new int[levels])</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  name[0] = level1;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  name[1] = level2;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  name[2
] = level3;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  name[3] = level4;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  name[4] = level5;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a8bad8be3072cd46efeacdf4e9fc7c2b8"> 176</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a8bad8be3072cd46efeacdf4e9fc7c2b8">sysctl::~sysctl</a>()</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">delete</span>[] name;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764"> 182</a></span> <span class="keyword">inline</span> sysctl::Integer <a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">sysctl::integer</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"></span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> Integer(levels, name);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a>
<span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266"> 188</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">sysctl::string</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keyword"></span>{</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// First determine the size of the string.</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78
da8657be">size</a> = 0;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, <span class="keyword">nullptr</span>, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// Now read it.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordtype">size_t</span> length = size / <span class="
keyword">sizeof</span>(char);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">char</span>* <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a> = <span class="keyword">new</span> <span class="keywordtype">char</span>[length];</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, temp, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00201"></a><span class="l
ineno"> 201</span>  <span class="keyword">delete</span>[] <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// TODO(benh): It's possible that the value has changed since we</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// determined it's length above. We should really check that we</span></div><div class="line"><a name="l00207"></a><span class="li
neno"> 207</span>  <span class="comment">// get back the same length and if not throw an error.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// The "string" in 'temp' might include null bytes, so to get all of</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// the data we need to create a string with 'size' (but we exclude</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// the last null byte via 'size - 1').</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  std::string result(temp, size - 1);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">delete</span>[] <a class
="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#aa0170ffd9e615f415e5cef7126831728"> 218</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<timeval></a> <a class="code" href="structos_1_1sysctl.html#aa0170ffd9e615f415e5cef7126831728">sysctl::time</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"></span>{</div><div class="line"
><a name="l00220"></a><span class="lineno"> 220</span>  timeval result;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <span class="keyword">sizeof</span>(result);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, &result, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</spa
n>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691"> 229</a></span> <span class="keyword">inline</span> sysctl::Table <a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">sysctl::table</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<size_t></a>& length)<span class="keyword"> const</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword"></span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordfl
ow">return</span> Table(levels, name, length);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keyword">inline</span> sysctl::Integer::Integer(</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordtype">int</span> _levels,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordtype">int</span>* _name)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  : levels(_levels),</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  name(_name)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {
}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> sysctl::Integer::operator <a class="code" href="classTry.html">Try<T></a>()</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  T i;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <span class="keyword">sizeof</span>(i);</div><div class="line"><a name="l00248"></a><span class="lin
eno"> 248</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, &i, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keywo
rd">inline</span> sysctl::Table::Table(</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">int</span> _levels,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">int</span>* _name,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<size_t></a>& _length)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  : levels(_levels),</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  name(_name),</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  length(_length)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> {}</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div clas
s="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespaceos.html#a0e6a1f62b1d6cf26d216c980c21ee2cb"> 266</a></span> sysctl::Table::operator <a class="code" href="classTry.html">Try<std::vector<T></a>>()</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = 0;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span> (length.isNone()) {</div><div class="line"><a name="l00270"></a><span c
lass="lineno"> 270</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, <span class="keyword">nullptr</span>, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span> (size % <span class="keyword">sizeof</span>(T) != 0) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to determine the length of result, "
;</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="stringliteral">"amount of available data is not a multiple "</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="stringliteral">"of the table type"</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  length = <a class="code" href="classOption.html">Option<size_t></a>(size / <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  T* ts = <span class="keyword">new</span> T[length.get()];</div><div clas
s="line"><a name="l00282"></a><span class="lineno"> 282</span>  size = length.get() * <span class="keyword">sizeof</span>(T);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, ts, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keyword">delete</span>[] ts;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">retu
rn</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// TODO(benh): It's possible that the value has changed since we</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// determined it's length above (or from what was specified). We</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// should really check that we get back the same length and if not</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// throw an error.</span></div><div cl
ass="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  length = size / <span class="keyword">sizeof</span>(T);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  std::vector<T> results;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < length.get(); i++) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  results.push_back(ts[i]);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">delete</span>[] ts;</div><div class="line"><a name="l00301"></a><span class="lin
eno"> 301</span>  <span class="keywordflow">return</span> results;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#endif // __STOUT_OS_SYSCTL_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="sysctl_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_SYSCTL_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_SYSCTL_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Only provide sysctl support for OS X and FreeBSD.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#if !defined(__APPLE__) && !defined(__FreeBSD__)</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/sysctl.hpp is only available on OS X and FreeBSD."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="prepro
cessor">#endif</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <sys/sysctl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <sys/time.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </di
v><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00
033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Provides an abstraction for getting system information via the</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// underlying 'sysctl' system call. You describe the sysctl</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// "Management Information Base" (MIB) name via the constructor, for</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// example, to describe "maximum n
umber of processes allowed in the</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// system" you would do:</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// os::sysctl(CTL_KERN, KERN_MAXPROC)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// To _retrieve_ the value you need to use one of the 'integer',</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// 'string', 'table', or 'time' methods to indicate the type of the</span></div><div class="line"><a name="l00046"></a
><span class="lineno"> 46</span> <span class="comment">// value being retrieved. For example:</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// Try<int> maxproc = os::sysctl(CTL_KERN, KERN_MAXPROC).integer();</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">//</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Note that the 'table' method requires specifying a length. If you</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// would like the length to be looked up dynamically you can just pass</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="com
ment">// None. Here's an example using 'table' that builds on above:</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// Try<vector<kinfo_proc>> processes =</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// os::sysctl(CTL_KERN, KERN_PROC, KERN_PROC_ALL).table(maxprox.get());</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">//</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// TODO(benh): Provide an 'integer(i)', 'string(s)', and 'table(t)' to</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// enable sett
ing system information.</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html"> 59</a></span> <span class="keyword">struct </span><a class="code" href="structos_1_1sysctl.html">sysctl</a></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Note that we create a constructor for each number of levels</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// because we can't pick a suitable default for unused levels (in</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// order to distinguish no value from some value) and while Option</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// w
ould solve that it could also cause people to use None which</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// we'd need to later handle as an error.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">explicit</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywo
rdtype">int</span> level2, <span class="keywordtype">int</span> level3);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3, <span class="keywordtype">int</span> level4);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3, <span class="keywordtype">int</span> level4, <span class="keywordtype">int</span> level5);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="structos_1_1sysctl.html#a8bad8be3072cd46efeacdf4e9fc7c2b
8">~sysctl</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Get system information as an integer.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">private</span>: <span class="keyword">struct </span>Integer; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Integer <a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">integer</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span cl
ass="comment">// Get system information as a string.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">string</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Get system information as a timeval.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classTry.html">Try<timeval></a> <a class="code" href="structos_1_1sysctl.html#aa0170ffd9e615f415e5cef7126831728">time</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno
"> 84</span>  <span class="comment">// Get system information as a table, optionally specifying a</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// length. Note that this function is lazy and will not actually</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// perform the syscall until you cast (implicitly or explicitly) a</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// 'Table' to a std::vector<T>. For example, to get the first 10</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// processes in the process table you can do:</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">//</span></div><div class="line"><a name="l00090"></a><span clas
s="lineno"> 90</span>  <span class="comment">// Try<std::vector<kinfo_proc>> processes =</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// os::sysctl(CTL_KERN, KERN_PROC, KERN_PROC_ALL).table(10);</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">//</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">private</span>: <span class="keyword">struct </span>Table; <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  Table <a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>(<span class="keyword">const</span> <a class="code" href="cla
ssOption.html">Option<size_t></a>& length = <a class="code" href="structNone.html">None</a>()) <span class="keyword">const</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">struct </span>Integer</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  Integer(<span class="keywordtype">int</span> _levels, <span class="keywordtype">int</span>* _name);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">template</span> <<span class="keyword">typename</spa
n> T></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">operator</span> <a class="code" href="classTry.html">Try<T></a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> levels;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">int</span>* name;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">struct </span>Table</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111
"></a><span class="lineno"> 111</span>  Table(<span class="keywordtype">int</span> _levels, <span class="keywordtype">int</span>* _name, <span class="keyword">const</span> <a class="code" href="classOption.html">Option<size_t></a>& _length);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">operator</span> <a class="code" href="classTry.html">Try<std::vector<T></a>>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> levels;</div><div class="line"><a n
ame="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">int</span>* name;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classOption.html">Option<size_t></a> length;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> levels;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">int</span>* name;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> };</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div cla
ss="line"><a name="l00126"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40"> 126</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  : levels(1), name(new int[levels])</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  name[0] = level1;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="structos_1_1s
ysctl.html#a86356cee57ee889e8353fc488a5e61a1"> 133</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  : levels(2), name(new int[levels])</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  name[0] = level1;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  name[1] = level2;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"
></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a3341cabf86d3585a12fb74000971a2e6"> 141</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  : levels(3), name(new int[levels])</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  name[0] = level1;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  name[1] = level2;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  name[2] = level3;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> 
}</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#acce1acf3d6dfb33d4d06dfe2ee09169b"> 150</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(<span class="keywordtype">int</span> level1, <span class="keywordtype">int</span> level2, <span class="keywordtype">int</span> level3, <span class="keywordtype">int</span> level4)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  : levels(4), name(new int[levels])</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  name[0] = level1;</div><div class="line"><a name="l00
154"></a><span class="lineno"> 154</span>  name[1] = level2;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  name[2] = level3;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  name[3] = level4;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#aae16684fca2b68f7ae4c998cee5f6f7e"> 160</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl::sysctl</a>(</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">int</span> level1,</div><div class="line"><a name="l
00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">int</span> level2,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">int</span> level3,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">int</span> level4,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">int</span> level5)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  : levels(5), name(new int[levels])</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  name[0] = level1;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  name[1] = level2;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  name[2
] = level3;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  name[3] = level4;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  name[4] = level5;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a8bad8be3072cd46efeacdf4e9fc7c2b8"> 176</a></span> <span class="keyword">inline</span> <a class="code" href="structos_1_1sysctl.html#a8bad8be3072cd46efeacdf4e9fc7c2b8">sysctl::~sysctl</a>()</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">delete</span>[] name;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764"> 182</a></span> <span class="keyword">inline</span> sysctl::Integer <a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">sysctl::integer</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword"></span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> Integer(levels, name);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a>
<span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266"> 188</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">sysctl::string</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keyword"></span>{</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// First determine the size of the string.</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78
da8657be">size</a> = 0;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, <span class="keyword">nullptr</span>, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// Now read it.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordtype">size_t</span> length = size / <span class="
keyword">sizeof</span>(char);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">char</span>* <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a> = <span class="keyword">new</span> <span class="keywordtype">char</span>[length];</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, temp, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00201"></a><span class="l
ineno"> 201</span>  <span class="keyword">delete</span>[] <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// TODO(benh): It's possible that the value has changed since we</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// determined it's length above. We should really check that we</span></div><div class="line"><a name="l00207"></a><span class="li
neno"> 207</span>  <span class="comment">// get back the same length and if not throw an error.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// The "string" in 'temp' might include null bytes, so to get all of</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// the data we need to create a string with 'size' (but we exclude</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// the last null byte via 'size - 1').</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  std::string result(temp, size - 1);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">delete</span>[] <a class
="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#aa0170ffd9e615f415e5cef7126831728"> 218</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<timeval></a> <a class="code" href="structos_1_1sysctl.html#aa0170ffd9e615f415e5cef7126831728">sysctl::time</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"></span>{</div><div class="line"
><a name="l00220"></a><span class="lineno"> 220</span>  timeval result;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <span class="keyword">sizeof</span>(result);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, &result, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</spa
n>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691"> 229</a></span> <span class="keyword">inline</span> sysctl::Table <a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">sysctl::table</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<size_t></a>& length)<span class="keyword"> const</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword"></span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordfl
ow">return</span> Table(levels, name, length);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keyword">inline</span> sysctl::Integer::Integer(</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordtype">int</span> _levels,</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordtype">int</span>* _name)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  : levels(_levels),</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  name(_name)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {
}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> sysctl::Integer::operator <a class="code" href="classTry.html">Try<T></a>()</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  T i;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = <span class="keyword">sizeof</span>(i);</div><div class="line"><a name="l00248"></a><span class="lin
eno"> 248</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, &i, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> i;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keywo
rd">inline</span> sysctl::Table::Table(</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordtype">int</span> _levels,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">int</span>* _name,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<size_t></a>& _length)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  : levels(_levels),</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  name(_name),</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  length(_length)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> {}</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div clas
s="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespaceos.html#a0e6a1f62b1d6cf26d216c980c21ee2cb"> 266</a></span> sysctl::Table::operator <a class="code" href="classTry.html">Try<std::vector<T></a>>()</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = 0;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span> (length.isNone()) {</div><div class="line"><a name="l00270"></a><span c
lass="lineno"> 270</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html#a670413ae2850bb31a74f552672accf40">sysctl</a>(name, levels, <span class="keyword">nullptr</span>, &size, <span class="keyword">nullptr</span>, 0) == -1) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">if</span> (size % <span class="keyword">sizeof</span>(T) != 0) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to determine the length of result, "
;</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="stringliteral">"amount of available data is not a multiple "</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="stringliteral">"of the table type"</span>);</div><div class="line"><a name="l00277"></a><span class="line
<TRUNCATED>
[35/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/internal_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/internal_8hpp_source.html b/content/api/latest/c++/internal_8hpp_source.html
index 0995101..047b9e9 100644
--- a/content/api/latest/c++/internal_8hpp_source.html
+++ b/content/api/latest/c++/internal_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">internal.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="internal_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span cl
ass="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distribu
ted under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __LINUX_ROUTING_INTERNAL_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __LINUX_ROUTING_INTERNAL_HPP__</span></div><div
class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <netlink/cache.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <netlink/errno.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <netlink/netlink.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <netlink/socket.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class
="preprocessor">#include <string></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespacerouting.html">routing</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Customized deallocation fun
ctions for netlink objects.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(T* t);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacerouting.html#a31ce7b8c4c1c41c5d23cf9612098150c"> 39</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouti
ng.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(<span class="keyword">struct</span> nl_cache* cache)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  nl_cache_free(cache);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespacerouting.html#aff13c5cce149d72bea8d202bc7183fa8"> 46</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9
902">cleanup</a>(<span class="keyword">struct</span> nl_sock* sock)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  nl_socket_free(sock);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// A helper class for managing netlink objects (e.g., rtnl_link,</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// nl_sock, etc.). It manages the life cycle of a netlink object. It</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// is copyable and as
signable, and multiple copies share the same</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// underlying netlink object. A netlink object specific cleanup</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// function will be invoked when the last copy of this wrapper is</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// being deleted (similar to Future<T>). We use this class to simplify</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// our code, especially for error handling.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00060"></a><span class="lineno"><a class="li
ne" href="classrouting_1_1Netlink.html"> 60</a></span> <span class="keyword">class </span><a class="code" href="classrouting_1_1Netlink.html">Netlink</a></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classrouting_1_1Netlink.html#a49f5365ef1c5c21f7c7dc4f8cd0f11c9"> 63</a></span>  <span class="keyword">explicit</span> <a class="code" href="classrouting_1_1Netlink.html#a49f5365ef1c5c21f7c7dc4f8cd0f11c9">Netlink</a>(T* <span class="keywordtype">object</span>) : data(new Data(object)) {}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e"> 65</a></sp
an>  T* <span class="keyword">get</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> data->object; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">explicit</span> Data(T* _object) : object(_object) {}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  ~Data()</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</di
v><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (<span class="keywordtype">object</span> != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(<span class="keywordtype">object</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  T* object;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l
00082"></a><span class="lineno"> 82</span>  std::shared_ptr<Data> data;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Returns a netlink socket for communicating with the kernel. This</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// socket is needed for most of the operations. The default protocol</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// of the netlink socket is NETLINK_ROUTE, but you can optionally</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// provide a
different one.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// TODO(chzhcn): Consider renaming 'routing' to 'netlink'.</span></div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370"> 91</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>(<span class="keywordtype">int</span> protocol = NETLINK_ROUTE)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">struct </span>nl_sock* s = nl_socket_alloc();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if
</span> (s == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to allocate netlink socket"</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct nl_sock></a> sock(s);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = nl
_connect(sock.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), protocol);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="stringliteral">"Failed to connect to netlink protocol: "</span> +</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <
span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> } <span class="comment">// namespace routing {</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif // __LINUX_ROUTING_INTERNAL_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="internal_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span cl
ass="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distribu
ted under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __LINUX_ROUTING_INTERNAL_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __LINUX_ROUTING_INTERNAL_HPP__</span></div><div
class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <netlink/cache.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <netlink/errno.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <netlink/netlink.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <netlink/socket.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <memory></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class
="preprocessor">#include <string></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespacerouting.html">routing</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Customized deallocation fun
ctions for netlink objects.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(T* t);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacerouting.html#a31ce7b8c4c1c41c5d23cf9612098150c"> 39</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouti
ng.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(<span class="keyword">struct</span> nl_cache* cache)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  nl_cache_free(cache);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespacerouting.html#aff13c5cce149d72bea8d202bc7183fa8"> 46</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9
902">cleanup</a>(<span class="keyword">struct</span> nl_sock* sock)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  nl_socket_free(sock);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// A helper class for managing netlink objects (e.g., rtnl_link,</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// nl_sock, etc.). It manages the life cycle of a netlink object. It</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// is copyable and as
signable, and multiple copies share the same</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// underlying netlink object. A netlink object specific cleanup</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// function will be invoked when the last copy of this wrapper is</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// being deleted (similar to Future<T>). We use this class to simplify</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// our code, especially for error handling.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00060"></a><span class="lineno"><a class="li
ne" href="classrouting_1_1Netlink.html"> 60</a></span> <span class="keyword">class </span><a class="code" href="classrouting_1_1Netlink.html">Netlink</a></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classrouting_1_1Netlink.html#a49f5365ef1c5c21f7c7dc4f8cd0f11c9"> 63</a></span>  <span class="keyword">explicit</span> <a class="code" href="classrouting_1_1Netlink.html#a49f5365ef1c5c21f7c7dc4f8cd0f11c9">Netlink</a>(T* <span class="keywordtype">object</span>) : data(new Data(object)) {}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e"> 65</a></sp
an>  T* <span class="keyword">get</span>() <span class="keyword">const</span> { <span class="keywordflow">return</span> data->object; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">struct </span>Data</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">explicit</span> Data(T* _object) : object(_object) {}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  ~Data()</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</di
v><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (<span class="keywordtype">object</span> != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(<span class="keywordtype">object</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  T* object;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l
00082"></a><span class="lineno"> 82</span>  std::shared_ptr<Data> data;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> };</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Returns a netlink socket for communicating with the kernel. This</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// socket is needed for most of the operations. The default protocol</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// of the netlink socket is NETLINK_ROUTE, but you can optionally</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// provide a
different one.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// TODO(chzhcn): Consider renaming 'routing' to 'netlink'.</span></div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370"> 91</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a>(<span class="keywordtype">int</span> protocol = NETLINK_ROUTE)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">struct </span>nl_sock* s = nl_socket_alloc();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if
</span> (s == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to allocate netlink socket"</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct nl_sock></a> sock(s);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = nl
_connect(sock.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), protocol);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="stringliteral">"Failed to connect to netlink protocol: "</span> +</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::string(nl_geterror(error)));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <
span class="keywordflow">return</span> sock;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> } <span class="comment">// namespace routing {</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif // __LINUX_ROUTING_INTERNAL_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classrouting_1_1Netlink_html_a49f5365ef1c5c21f7c7dc4f8cd0f11c9"><div class="ttname"><a href="classrouting_1_1Netlink.html#a49f5365ef1c5c21f7c7dc4f8cd0f11c9">routing::Netlink::Netlink</a></div><div class="ttdeci">Netlink(T *object)</div><div class="ttdef"><b>Definition:</b> internal.hpp:63</div></div>
<div class="ttc" id="classrouting_1_1Netlink_html_aed276efbe5490b33b471783504b5f89e"><div class="ttname"><a href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">routing::Netlink::get</a></div><div class="ttdeci">T * get() const </div><div class="ttdef"><b>Definition:</b> internal.hpp:65</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/json_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/json_8hpp_source.html b/content/api/latest/c++/json_8hpp_source.html
index ace5a33..7541ac0 100644
--- a/content/api/latest/c++/json_8hpp_source.html
+++ b/content/api/latest/c++/json_8hpp_source.html
@@ -60,7 +60,7 @@
<div class="ttc" id="structJSON_1_1Value_html_a32ddf233c0ec159c4d72252529219cf6"><div class="ttname"><a href="structJSON_1_1Value.html#a32ddf233c0ec159c4d72252529219cf6">JSON::Value::as</a></div><div class="ttdeci">const T & as() const </div><div class="ttdef"><b>Definition:</b> json.hpp:340</div></div>
<div class="ttc" id="structJSON_1_1Comparator_html_a059cca3f6cc8beaf6ded0ec05e08051a"><div class="ttname"><a href="structJSON_1_1Comparator.html#a059cca3f6cc8beaf6ded0ec05e08051a">JSON::Comparator::operator()</a></div><div class="ttdeci">bool operator()(const Null &) const </div><div class="ttdef"><b>Definition:</b> json.hpp:648</div></div>
<div class="ttc" id="structJSON_1_1Boolean_html_a6281b906fcdec8d438cf7460d5364342"><div class="ttname"><a href="structJSON_1_1Boolean.html#a6281b906fcdec8d438cf7460d5364342">JSON::Boolean::value</a></div><div class="ttdeci">bool value</div><div class="ttdef"><b>Definition:</b> json.hpp:207</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< size_t ></a></div></div>
<div class="ttc" id="structJSON_1_1Comparator_html_a7f9b71828f92523e7b2574bfab5ee297"><div class="ttname"><a href="structJSON_1_1Comparator.html#a7f9b71828f92523e7b2574bfab5ee297">JSON::Comparator::operator()</a></div><div class="ttdeci">bool operator()(const Number &other) const </div><div class="ttdef"><b>Definition:</b> json.hpp:625</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/jwt_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/jwt_8hpp_source.html b/content/api/latest/c++/jwt_8hpp_source.html
index 2d031cb..7bc55e8 100644
--- a/content/api/latest/c++/jwt_8hpp_source.html
+++ b/content/api/latest/c++/jwt_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="jwt_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __PROCESS_JWT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __PROCESS_JWT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <ostream></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <spa
n class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos_1_1uri.html#a5dff7c4a2df7be12fb642b5801c34f9f">http</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">namespace </span>authentication {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#
160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// Represents the various errors that can be returned when parsing or</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// creating JSON Web Tokens. This can be useful to create proper</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// responses to HTTP requests that included a token.</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWTError.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html">JWTError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <sp
an class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017ed"> 32</a></span>  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017ed">Type</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017eda506556a229186f5b45f364032625ff5b">INVALID_TOKEN</a>, <span class="comment">// Invalid token.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017eda696b031073e74bf2cb98e5ef201d4aa3">UNKNOWN</a> <span class="comment">// Internal error/all ot
her errors.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#aeb5bb171a01d1a4dfaf15c5f62630021"> 37</a></span>  <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#aeb5bb171a01d1a4dfaf15c5f62630021">JWTError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>, <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017ed">Type</a> _type)</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a082bf5dfcd9d0a9ffcb6851d8e042a01"> 38</a></span>  : <a cl
ass="code" href="classError.html">Error</a>(message), <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a082bf5dfcd9d0a9ffcb6851d8e042a01">type</a>(_type) {};</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a6f5217e567bf225c536e03e858a017ed">Type</a> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWTError.html#a082bf5dfcd9d0a9ffcb6851d8e042a01">type</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classprocess_1_1http
_1_1authentication_1_1JWT.html"> 55</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html">JWT</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a40f175242221bec4b180ad2c586bb4bb"> 58</a></span>  <span class="keyword">enum class</span> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a40f175242221bec4b180ad2c586bb4bb">Alg</a></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="structNone.html">None</a>,</div><div class="line"><a name="l00061"></a><
span class="lineno"> 61</span>  HS256</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html"> 64</a></span>  <span class="keyword">struct </span><a class="code" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html">Header</a></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html#ab3afc142401a148817f17b87697b41b1"> 66</a></span>  <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a40f175242221bec4b180ad2c586bb4bb">Alg</a> <a class="code" href="structprocess_1_1http_1_1authenticat
ion_1_1JWT_1_1Header.html#ab3afc142401a148817f17b87697b41b1">alg</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html#ace140e703c5436ceb7b5096b303b7d29"> 67</a></span>  <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html#ace140e703c5436ceb7b5096b303b7d29">typ</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  };</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<JWT, JWTError></a> <a class="code" href="namespaceappc_1_1spec.html#a2107ae129dd83fbd20b22195247f16b5">parse</a>(<span class="keyword">const</span> std::string& token);</div><
div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<JWT, JWTError></a> <a class="code" href="namespaceappc_1_1spec.html#a2107ae129dd83fbd20b22195247f16b5">parse</a>(</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">const</span> std::string& token,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">const</span> std::string& secret);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<JWT, JWTError></a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c
3c2100fbe">create</a>(<span class="keyword">const</span> <a class="code" href="structJSON_1_1Object.html">JSON::Object</a>& payload);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<JWT, JWTError></a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>(</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">const</span> <a class="code" href="structJSON_1_1Object.html">JSON::Object</a>& payload,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">const</span> std::string& secret);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="li
neno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a1a38ca588a67554ab7c4ca33d7862c3f"> 118</a></span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html">Header</a> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a1a38ca588a67554ab7c4ca33d7862c3f">header</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a6cef50dc4ce63043a7abf135ab17ce49"> 119</a></span>  <span class="keyword">const</span> <a class="code" href="structJSON_1_1Object.html">JSON::Object</a> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a6cef50dc4ce63043a7abf135ab17ce49">payload</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a7a5314085fad497a929f9901cf55721a"> 120</a></span>
  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html#a7a5314085fad497a929f9901cf55721a">signature</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html">JWT</a>(<span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html">Header</a>& header,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">const</span> <a class="code" href="structJSON_1_1Object.html">JSON::Object</a>& payload,</div><div class="line"><a name="l00125"><
/a><span class="lineno"> 125</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& signature);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> };</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> std::ostream& <a class="code" href="namespaceprocess_1_1http_1_1authentication.html#ac9e252b8318f0ef96f408664b94b7b75">operator<<</a>(std::ostream& stream, <span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1authentication_1_1JWT.html">JWT</a>& jwt);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> } <span class="comment">// namespace authentication {</span></div><div class="line"><a name="l00131"></a><spa
n class="lineno"> 131</span> } <span class="comment">// namespace http {</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> } <span class="comment">// namespace process {</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#endif // __PROCESS_JWT_HPP__</span></div><div class="ttc" id="classprocess_1_1http_1_1authentication_1_1JWTError_html_aeb5bb171a01d1a4dfaf15c5f62630021"><div class="ttname"><a href="classprocess_1_1http_1_1authentication_1_1JWTError.html#aeb5bb171a01d1a4dfaf15c5f62630021">process::http::authentication::JWTError::JWTError</a></div><div class="ttdeci">JWTError(const std::string &message, Type _type)</div><div class="ttdef"><b>Definition:</b> jwt.hpp:37</div></div>
<div class="ttc" id="classprocess_1_1http_1_1authentication_1_1JWT_html_a1a38ca588a67554ab7c4ca33d7862c3f"><div class="ttname"><a href="classprocess_1_1http_1_1authentication_1_1JWT.html#a1a38ca588a67554ab7c4ca33d7862c3f">process::http::authentication::JWT::header</a></div><div class="ttdeci">const Header header</div><div class="ttdef"><b>Definition:</b> jwt.hpp:118</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header_html"><div class="ttname"><a href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html">process::http::authentication::JWT::Header</a></div><div class="ttdef"><b>Definition:</b> jwt.hpp:64</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
@@ -66,7 +66,7 @@
<div class="ttc" id="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header_html_ab3afc142401a148817f17b87697b41b1"><div class="ttname"><a href="structprocess_1_1http_1_1authentication_1_1JWT_1_1Header.html#ab3afc142401a148817f17b87697b41b1">process::http::authentication::JWT::Header::alg</a></div><div class="ttdeci">Alg alg</div><div class="ttdef"><b>Definition:</b> jwt.hpp:66</div></div>
<div class="ttc" id="namespaceappc_1_1spec_html_a2107ae129dd83fbd20b22195247f16b5"><div class="ttname"><a href="namespaceappc_1_1spec.html#a2107ae129dd83fbd20b22195247f16b5">appc::spec::parse</a></div><div class="ttdeci">Try< ImageManifest > parse(const std::string &value)</div><div class="ttdef"><b>Definition:</b> parse.hpp:36</div></div>
<div class="ttc" id="option_8hpp_html"><div class="ttname"><a href="option_8hpp.html">option.hpp</a></div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
<div class="ttc" id="structNone_html"><div class="ttname"><a href="structNone.html">None</a></div><div class="ttdef"><b>Definition:</b> none.hpp:27</div></div>
<div class="ttc" id="namespaceprocess_html"><div class="ttname"><a href="namespaceprocess.html">process</a></div><div class="ttdef"><b>Definition:</b> executor.hpp:47</div></div>
<div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
[16/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2common_2values_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2common_2values_8hpp_source.html b/content/api/latest/c++/src_2common_2values_8hpp_source.html
index 03ab822..9c2a5b8 100644
--- a/content/api/latest/c++/src_2common_2values_8hpp_source.html
+++ b/content/api/latest/c++/src_2common_2values_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="src_2common_2values_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"><
/a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">
// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __COMMON_VALUES_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __COMMON_VALUES_HPP__</span></div><div class=
"line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <limits></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <type_traits></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno">
26</span> <span class="preprocessor">#include <<a class="code" href="interval_8hpp.html">stout/interval.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span>values {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="l
ine"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Convert Ranges value to IntervalSet value.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1values.html#a41448b6570e14d29707818205fee9258"> 35</a></span> <a class="code" href="classTry.html">Try<IntervalSet<T></a>> <a class="code" href="namespacemesos_1_1internal_1_1values.html#a41448b6570e14d29707818205fee9258">rangesToIntervalSet</a>(<span class="keyword">const</span> Value::Ranges& ranges)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="classIntervalSet.html">IntervalSet<T></a> <spa
n class="keyword">set</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  static_assert(</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::is_integral<T>::value,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="stringliteral">"IntervalSet<T> must use an integral type"</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> Value::Range& range, ranges.range()) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (range.begin() < <a class="code" href="option_8hpp.html#a784
07a45187058b9b4ef2042accb9bc4">std::numeric_limits<T>::min</a>() ||</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  range.end() > <a class="code" href="option_8hpp.html#ac4b53d77033a5d2405ef12ceb3dc6498">std::numeric_limits<T>::max</a>()) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Range is out of bounds"</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">set</span> += (<a class="code" href="classBound.html#ab04e30b11b381a6086c3adc85fb4555d">Bound<T>::closed</a>(range.begin()),</div><div class="line"><a name="l00
050"></a><span class="lineno"> 50</span>  <a class="code" href="classBound.html">Bound<T>::closed</a>(range.end()));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="keyword">set</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Convert IntervalSet value to Ranges value.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">template</
span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1values.html#ae37129836065b22ed456cf26121de888"> 59</a></span> Value::Ranges <a class="code" href="namespacemesos_1_1internal_1_1values.html#ae37129836065b22ed456cf26121de888">intervalSetToRanges</a>(<span class="keyword">const</span> <a class="code" href="classIntervalSet.html">IntervalSet<T></a>& <span class="keyword">set</span>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  Value::Ranges ranges;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  static_assert(</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::is_int
egral<T>::value,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="stringliteral">"IntervalSet<T> must use an integral type"</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classInterval.html">Interval<T></a>& interval, <span class="keyword">set</span>) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  Value::Range* range = ranges.add_range();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  range->set_begin(interval.<a class="code" href="classInterval.html#aee1302bc704e91193a9003ce396b7c9b">lower</a>());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  range-
>set_end(interval.<a class="code" href="classInterval.html#abdc59b5f3784ae25b54c73acbb714296">upper</a>() - 1);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> ranges;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> } <span class="comment">// namespace values {</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> } <span class="comment">// namespace mesos {</span><
/div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#endif // __COMMON_VALUES_HPP__</span></div><div class="ttc" id="classBound_html"><div class="ttname"><a href="classBound.html">Bound</a></div><div class="ttdef"><b>Definition:</b> interval.hpp:34</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="include_2mesos_2mesos_8hpp_html"><div class="ttname"><a href="include_2mesos_2mesos_8hpp.html">mesos.hpp</a></div></div>
<div class="ttc" id="classIntervalSet_html"><div class="ttname"><a href="classIntervalSet.html">IntervalSet</a></div><div class="ttdef"><b>Definition:</b> interval.hpp:28</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2messages_2flags_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2messages_2flags_8hpp_source.html b/content/api/latest/c++/src_2messages_2flags_8hpp_source.html
index e960b6a..e2a9253 100644
--- a/content/api/latest/c++/src_2messages_2flags_8hpp_source.html
+++ b/content/api/latest/c++/src_2messages_2flags_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">flags.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="src_2messages_2flags_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006">
</a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"
>// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __MESSAGES_FLAGS_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __MESSAGES_FLAGS_HPP__</span></div><div cla
ss="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <ostream></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stou
t_2protobuf_8hpp.html">stout/protobuf.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">stout/flags/parse.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="src_2common_2parse_8hpp.html">common/parse.hpp</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span
class="lineno"> 32</span> <span class="preprocessor">#include "messages/flags.pb.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceflags.html">flags</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespaceflags.html#a85e4ffb6aaddb6855f88e60538f889a8"> 37</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::ImageGcConfig></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::str
ing& value)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb
6258ba7">error</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::ImageGcConfig>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceflags.html#a1604d51c2b2aa788abc334a5a4b3b17c"> 50</a></
span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::Firewall></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isErr
or</a>()) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::Firewall>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l
00062"></a><span class="lineno"> 62</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespaceflags.html#a5067dd2ba73c0d0c3d5c2d8aab4c1768"> 63</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::ContainerDNSInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946e
ef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::ContainerDNSInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="lin
e"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespaceflags.html#a40f8a13afd42d04d87f2d4b593e516fd"> 76</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::SlaveCapabilities></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Conver
t from string or file to JSON.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line">
<a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::SlaveCapabilities>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> } <span class="comment">// namespace flags {</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</
div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#a9293dca799913379ae03811dff19fd2f"> 92</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::ostream& stream,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> ImageGcConfig& imageGcConfig)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> stream << imageGcConfig.DebugString();</div><div class="line"><a name="l00097"></a><span class="line
no"> 97</span> }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#a1a4e1e51f2c90c7d3e3385712e52bf2e"> 100</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::ostream& stream,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">const</span> Firewall& rules)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> stream <
;< rules.DebugString();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#acba82bfc2a4fa6397a9809d7f1b5eb66"> 108</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::ostream& stream,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">const</span> ContainerDNSInfo& dns)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"><
/a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> stream << dns.DebugString();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#a6bd34482c86e81b7b703c51efc28dcd7"> 116</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::ostream& stream,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> SlaveCapabilities& slaveCapabilities)</div><div class="li
ne"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> stream << slaveCapabilities.DebugString();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#endif // __MESSAGES_FLAGS_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classErro
r.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="src_2messages_2flags_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006">
</a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"
>// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __MESSAGES_FLAGS_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __MESSAGES_FLAGS_HPP__</span></div><div cla
ss="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <ostream></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stou
t_2protobuf_8hpp.html">stout/protobuf.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">stout/flags/parse.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="src_2common_2parse_8hpp.html">common/parse.hpp</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span
class="lineno"> 32</span> <span class="preprocessor">#include "messages/flags.pb.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceflags.html">flags</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespaceflags.html#a85e4ffb6aaddb6855f88e60538f889a8"> 37</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::ImageGcConfig></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::str
ing& value)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb
6258ba7">error</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::ImageGcConfig>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespaceflags.html#a1604d51c2b2aa788abc334a5a4b3b17c"> 50</a></
span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::Firewall></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isErr
or</a>()) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::Firewall>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l
00062"></a><span class="lineno"> 62</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="namespaceflags.html#a5067dd2ba73c0d0c3d5c2d8aab4c1768"> 63</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::ContainerDNSInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946e
ef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::ContainerDNSInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="lin
e"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespaceflags.html#a40f8a13afd42d04d87f2d4b593e516fd"> 76</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::internal::SlaveCapabilities></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Conver
t from string or file to JSON.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line">
<a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::internal::SlaveCapabilities>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> } <span class="comment">// namespace flags {</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</
div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#a9293dca799913379ae03811dff19fd2f"> 92</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::ostream& stream,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> ImageGcConfig& imageGcConfig)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> stream << imageGcConfig.DebugString();</div><div class="line"><a name="l00097"></a><span class="line
no"> 97</span> }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#a1a4e1e51f2c90c7d3e3385712e52bf2e"> 100</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::ostream& stream,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">const</span> Firewall& rules)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> stream <
;< rules.DebugString();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#acba82bfc2a4fa6397a9809d7f1b5eb66"> 108</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::ostream& stream,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">const</span> ContainerDNSInfo& dns)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"><
/a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> stream << dns.DebugString();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal.html#a6bd34482c86e81b7b703c51efc28dcd7"> 116</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254">operator<<</a>(</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::ostream& stream,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> SlaveCapabilities& slaveCapabilities)</div><div class="li
ne"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> stream << slaveCapabilities.DebugString();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#endif // __MESSAGES_FLAGS_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classErro
r.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">parse.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp_source.html b/content/api/latest/c++/src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp_source.html
index fd3084a..68fec82 100644
--- a/content/api/latest/c++/src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp_source.html
+++ b/content/api/latest/c++/src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="src_2slave_2containerizer_2mesos_2isolators_2network_2cni_2spec_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</spa
n></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="line
no"> 12</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __ISOLATOR_CNI_SPEC_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#defi
ne __ISOLATOR_CNI_SPEC_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// ONLY USEFUL AFTER RUNNING PROTOC.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "slave/containerizer/mesos/isolators/network/cni/spec.pb.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno">
25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span>slave {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span>cni {</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html"> 30</a></span> <span class="keyword">namespace </span>spec {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a
class="line" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ab1a247ae9ce372ba945b41a158ec5e76"> 32</a></span> constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ab1a247ae9ce372ba945b41a158ec5e76">CNI_VERSION</a>[] = <span class="stringliteral">"0.3.0"</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// CNI commands.</span></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a58d7ac47d7f6becf66872a9d4ce6dc2d"> 36</a></span> constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a58d7a
c47d7f6becf66872a9d4ce6dc2d">CNI_CMD_ADD</a>[] = <span class="stringliteral">"ADD"</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#aeb9037c0bd42a6db4c89922a9ea8621c"> 37</a></span> constexpr <span class="keywordtype">char</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#aeb9037c0bd42a6db4c89922a9ea8621c">CNI_CMD_DEL</a>[] = <span class="stringliteral">"DEL"</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Well-known CNI error codes:</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// https://github.com/containernetworking/cni/b
lob/master/SPEC.md#well-known-error-codes</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a27fb156954596c61d0b5f9f270ef4f27"> 42</a></span> constexpr uint32_t <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a27fb156954596c61d0b5f9f270ef4f27">CNI_ERROR_INCOMPATIBLE_VERSION</a> = 1;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#aa474e1006da2c2afabc528c85e853c66"> 43</a></span> constexpr uint32_t <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#aa474e1006da2c2afabc528c85e853c66">CNI_ERROR_UNSUPPORTED_FIELD</a> = 2;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"
></a><span class="lineno"> 46</span> <a class="code" href="classTry.html">Try<NetworkConfig></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a05bb31e8a52e4506dcb41e3c201186e9">parseNetworkConfig</a>(<span class="keyword">const</span> std::string& s);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <a class="code" href="classTry.html">Try<NetworkInfo></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a0d481372e320626d823686de000080cd">parseNetworkInfo</a>(<span class="keyword">const</span> std::string& s);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Takes a DNS specification and returns a string containing</span></div><div class="
line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// the equivalent resolv.conf(5) format.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a712075b903ade594f4617fcbf3828ffd">formatResolverConfig</a>(<span class="keyword">const</span> DNS& dns);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// Creates a `spec::Error` object, with the `msg` and `code`</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// specified. Returns a JSON string representation of the</span></div><div class="line"><a name="l00057"></a><span class="lineno">
57</span> <span class="comment">// `spec::Error` object. See details in:</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// https://github.com/containernetworking/cni/blob/master/SPEC.md#result</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>(<span class="keyword">const</span> std::string& msg, uint32_t code);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// This class encapsulates a JSON formatted string of type</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="
comment">// `spec::Error`. It can be used by CNI plugins to return a CNI error</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// in a `Try` object when a failure occurs.</span></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1cni_1_1spec_1_1PluginError.html"> 65</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1cni_1_1spec_1_1PluginError.html">PluginError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">::Error</a></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1cni_1_1spec_1_1Plugin
Error.html#ac0d92c5854587059ef4b8a45d5c560d9"> 68</a></span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1cni_1_1spec_1_1PluginError.html#ac0d92c5854587059ef4b8a45d5c560d9">PluginError</a>(<span class="keyword">const</span> std::string& msg, uint32_t code)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  : ::<a class="code" href="classError.html">Error</a>(<a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>(msg, code)) {}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ac7535099ce3dc8acd4b7d41a247b8e78"> 73
</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ac7535099ce3dc8acd4b7d41a247b8e78">operator<<</a>(std::ostream& stream, <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1cni_1_1spec_1_1PluginError.html">PluginError</a>& _error)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> stream << _error.<a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> } <span class="comment">// namespace spec
{</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> } <span class="comment">// namespace cni {</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> } <span class="comment">// namespace slave {</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#endif // __ISOLATOR_CNI_SPEC_HPP__</span></div><div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_a05bb31e8a52e4506dcb41e3c201186e9"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a05bb31
e8a52e4506dcb41e3c201186e9">mesos::internal::slave::cni::spec::parseNetworkConfig</a></div><div class="ttdeci">Try< NetworkConfig > parseNetworkConfig(const std::string &s)</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classmesos_1_1internal_1_1slave_1_1cni_1_1spec_1_1PluginError_html"><div class="ttname"><a href="classmesos_1_1internal_1_1slave_1_1cni_1_1spec_1_1PluginError.html">mesos::internal::slave::cni::spec::PluginError</a></div><div class="ttdef"><b>Definition:</b> spec.hpp:65</div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_aa474e1006da2c2afabc528c85e853c66"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#aa474e1006da2c2afabc528c85e853c66">mesos::internal::slave::cni::spec::CNI_ERROR_UNSUPPORTED_FIELD</a></div><div class="ttdeci">constexpr uint32_t CNI_ERROR_UNSUPPORTED_FIELD</div><div class="ttdef"><b>Definition:</b> spec.hpp:43</div></div>
@@ -64,7 +64,7 @@
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_a58d7ac47d7f6becf66872a9d4ce6dc2d"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a58d7ac47d7f6becf66872a9d4ce6dc2d">mesos::internal::slave::cni::spec::CNI_CMD_ADD</a></div><div class="ttdeci">constexpr char CNI_CMD_ADD[]</div><div class="ttdef"><b>Definition:</b> spec.hpp:36</div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_aeb9037c0bd42a6db4c89922a9ea8621c"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#aeb9037c0bd42a6db4c89922a9ea8621c">mesos::internal::slave::cni::spec::CNI_CMD_DEL</a></div><div class="ttdeci">constexpr char CNI_CMD_DEL[]</div><div class="ttdef"><b>Definition:</b> spec.hpp:37</div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_a712075b903ade594f4617fcbf3828ffd"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#a712075b903ade594f4617fcbf3828ffd">mesos::internal::slave::cni::spec::formatResolverConfig</a></div><div class="ttdeci">std::string formatResolverConfig(const DNS &dns)</div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
<div class="ttc" id="namespaceinternal_html"><div class="ttname"><a href="namespaceinternal.html">internal</a></div><div class="ttdef"><b>Definition:</b> attributes.hpp:24</div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &msg, uint32_t code)</div></div>
<div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2slave_2state_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2slave_2state_8hpp_source.html b/content/api/latest/c++/src_2slave_2state_8hpp_source.html
index 73faa5a..a0340a8 100644
--- a/content/api/latest/c++/src_2slave_2state_8hpp_source.html
+++ b/content/api/latest/c++/src_2slave_2state_8hpp_source.html
@@ -61,7 +61,7 @@
<div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1slave_1_1state_1_1SlaveState_html_aca52eeca2b7e9e6a0b4b2012f571e1ba"><div class="ttname"><a href="structmesos_1_1internal_1_1slave_1_1state_1_1SlaveState.html#aca52eeca2b7e9e6a0b4b2012f571e1ba">mesos::internal::slave::state::SlaveState::frameworks</a></div><div class="ttdeci">hashmap< FrameworkID, FrameworkState > frameworks</div><div class="ttdef"><b>Definition:</b> state.hpp:358</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Task ></a></div></div>
<div class="ttc" id="namespaceos_html_ac1c8ce3595084d78291f98c2be9f62ba"><div class="ttname"><a href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a></div><div class="ttdeci">Try< Nothing > rm(const std::string &path)</div><div class="ttdef"><b>Definition:</b> rm.hpp:26</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1slave_1_1state_1_1State_html_a85a6b53e715be297825be643113f30e4"><div class="ttname"><a href="structmesos_1_1internal_1_1slave_1_1state_1_1State.html#a85a6b53e715be297825be643113f30e4">mesos::internal::slave::state::State::resources</a></div><div class="ttdeci">Option< ResourcesState > resources</div><div class="ttdef"><b>Definition:</b> state.hpp:369</div></div>
[10/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/svn_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/svn_8hpp_source.html b/content/api/latest/c++/svn_8hpp_source.html
index d4bf40b..fe2452a 100644
--- a/content/api/latest/c++/svn_8hpp_source.html
+++ b/content/api/latest/c++/svn_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="svn_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></d
iv><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><
a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_SVN_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_SVN_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <apr_pools.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <svn_delta.h></span></div><div class="line"><a name="l00021"></a><spa
n class="lineno"> 21</span> <span class="preprocessor">#include <svn_error.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <svn_pools.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <svn_version.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line">
<a name="l00029"></a><span class="lineno"><a class="line" href="namespacesvn.html"> 29</a></span> <span class="keyword">namespace </span><a class="code" href="namespacesvn.html">svn</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="structsvn_1_1Diff.html"> 31</a></span> <span class="keyword">struct </span><a class="code" href="structsvn_1_1Diff.html">Diff</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="structsvn_1_1Diff.html#ac3e5661ec263b9fc2ee49e427035245f"> 33</a></span>  <a class="code" href="structsvn_1_1Diff.html#ac3e5661ec263b9fc2ee49e427035245f">Diff</a>(<span class="keyword">const</span> std::string& <a class="code" href="structsvn_1_1Diff.html#a1574e4ddc745088321538f3162b6467b">data</a>) : data(da
ta) {}</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structsvn_1_1Diff.html#a1574e4ddc745088321538f3162b6467b"> 35</a></span>  std::string <a class="code" href="structsvn_1_1Diff.html#a1574e4ddc745088321538f3162b6467b">data</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// Note, this function is exposed publicly in the event that someone</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// wants to coordinate the intialization of APR done automatically by</span></div><div class="l
ine"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// calls to svn::diff, svn::patch, etc. That is, if you're using the</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// svn::* functions in your code and you're also using APR you can</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// initialize the APR before you start doing things with threads that</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// might call svn::* functions.</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespacesvn.html#a5569b236a707a703171ecedb92e8a57d"> 45</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacesvn.html#a5569b236a707a703171ecedb92e8a57d">initialize
</a>()</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// We use a static variable to initialize the Apache Portable</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// Runtime (APR) library in a thread-safe way (at least with respect</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// to calls within svn::* since there is no way to guarantee that</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// another library isn't concurrently initializing the APR). Thread</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// safety is provided by the fact that the static variable 'apr'<
/span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// should get constructed (i.e., the APR constructor invoked) and</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// destructed in a thread safe way (as of GCC 4.3 and required for</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// C++11).</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">struct </span>APR</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  APR()</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  apr_initialize();</di
v><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  ~APR()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  apr_terminate();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  };</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">static</span> APR apr;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="line"><a name="l00070"></a><span class="linen
o"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="namespacesvn.html#af97eefc14cbcf6f81e217c6a9215cea9"> 72</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Diff></a> <a class="code" href="namespacesvn.html#af97eefc14cbcf6f81e217c6a9215cea9">diff</a>(<span class="keyword">const</span> std::string& from, <span class="keyword">const</span> std::string& to)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Initialize the Apache Portable Runtime subsystem, as necessary</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// for using the svn library.</span></div><div class="line"><a nam
e="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespacesvn.html#a5569b236a707a703171ecedb92e8a57d">initialize</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// Note that svn_pool_create wraps apr_pool_create_ex, which is</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// thread safe, see: http://goo.gl/NX0hps.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  apr_pool_t* pool = svn_pool_create(<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// First we need to produce a text delta stream by diffing 'source'</sp
an></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// against 'target'.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  svn_string_t source;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  source.data = from.data();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  source.len = from.length();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  svn_string_t target;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  target.data = to.data();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  target.len = to.length();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><
a name="l00092"></a><span class="lineno"> 92</span>  svn_txdelta_stream_t* delta;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#if SVN_VER_MAJOR >= 1 && SVN_VER_MINOR >= 8</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  svn_txdelta2(</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  &delta,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  svn_stream_from_string(&source, pool),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  svn_stream_from_string(&target, pool),</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">false</span>,</div><div class="line"><a name="l00100"></a><span class="l
ineno"> 100</span>  pool);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  svn_txdelta(</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  &delta,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  svn_stream_from_string(&source, pool),</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  svn_stream_from_string(&target, pool),</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  pool);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 10
9</span>  <span class="comment">// Now we want to convert this text delta stream into an svndiff</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// format based diff. Setup the handler that will consume the text</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// delta and produce the svndiff.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  svn_txdelta_window_handler_t handler;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">void</span>* baton = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  svn_stringbuf_t* <a class="code" href="namespacesvn.html#af97eefc14cbcf6f81e217c6a9215cea9">diff</a> = svn_stringbuf_create_ensure(1024, pool);</div><div class="line"><a name="l001
15"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#if SVN_VER_MAJOR >= 1 && SVN_VER_MINOR >= 7</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  svn_txdelta_to_svndiff3(</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  &handler,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  &baton,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  svn_stream_from_stringbuf(diff, pool),</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  0,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  SVN_DELTA_COMPRESSION_LEVEL_DEFAULT,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  pool);</div><div class="
line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#elif SVN_VER_MAJOR >= 1 && SVN_VER_MINOR >= 4</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  svn_txdelta_to_svndiff2(</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  &handler,</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  &baton,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  svn_stream_from_stringbuf(diff, pool),</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  0,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  pool);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> 
svn_txdelta_to_svndiff(</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  svn_stream_from_stringbuf(diff, pool),</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  pool,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  &handler,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  &baton);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// Now feed the text delta to the handler.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  svn_error_t* <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae
58e703656ab4a1bd5d9870441236727">error</a> = svn_txdelta_send_txstream(delta, handler, baton, pool);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (error != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">char</span> buffer[1024];</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  std::string message(svn_err_best_message(error, buffer, 1024));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  svn_pool_destroy(pool);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(message);</div><div class="line"><a name="l00147"></a><span clas
s="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="structsvn_1_1Diff.html">Diff</a> d(std::string(diff->data, diff->len));</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  svn_pool_destroy(pool);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> d;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l0015
7"></a><span class="lineno"><a class="line" href="namespacesvn.html#a018bb955e273aa2e6b6c950005ed6048"> 157</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacesvn.html#a018bb955e273aa2e6b6c950005ed6048">patch</a>(<span class="keyword">const</span> std::string& s, <span class="keyword">const</span> <a class="code" href="structsvn_1_1Diff.html">Diff</a>& <a class="code" href="namespacesvn.html#af97eefc14cbcf6f81e217c6a9215cea9">diff</a>)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// Initialize the Apache Portable Runtime subsystem, as necessary</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// for using the svn library.</span></div><div class="line"><a name="l00161"></a
><span class="lineno"> 161</span>  <a class="code" href="namespacesvn.html#a5569b236a707a703171ecedb92e8a57d">initialize</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Note that svn_pool_create wraps apr_pool_create_ex, which is</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// thread safe, see: http://goo.gl/NX0hps.</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  apr_pool_t* pool = svn_pool_create(<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// We want to apply the svndiff format diff to the source trying to</span></div><div class="l
ine"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// produce a result. First setup a handler for applying a text delta</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// to the source stream.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  svn_string_t source;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  source.data = s.data();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  source.len = s.length();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  svn_txdelta_window_handler_t handler;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">void</span>* baton = <span class="keyword">nullptr
</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  svn_stringbuf_t* patched = svn_stringbuf_create_ensure(s.length(), pool);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  svn_txdelta_apply(</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  svn_stream_from_string(&source, pool),</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  svn_stream_from_stringbuf(patched, pool),</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00184">
</a><span class="lineno"> 184</span>  pool,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  &handler,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  &baton);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// Setup a stream that converts an svndiff format diff to a text</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// delta, so that we can use our handler to patch the source string.</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  svn_stream_t* stream = svn_txdelta_parse_svndiff(</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  handler,</div><div class="line"><a name="l00192"></a><span class="l
ineno"> 192</span>  baton,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  TRUE,</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  pool);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// Now feed the diff into the stream to compute the patched result.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structsvn_1_1Diff.html#a1574e4ddc745088321538f3162b6467b">data</a> = diff.<a class="code" href="structsvn_1_1Diff.html#a1574e4ddc745088321538f3162b6467b">data</a>.data();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  apr_size_t length = diff.<a class="code" href="structsvn_1_1Diff.
html#a1574e4ddc745088321538f3162b6467b">data</a>.length();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  svn_error_t* <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = svn_stream_write(stream, data, &length);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (error != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">char</span> buffer[1024];</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  std::string message(svn_err_best_message(error, buffer, 1024));</div><div class="line"><a name="l00205"><
/a><span class="lineno"> 205</span>  svn_pool_destroy(pool);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(message);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  std::string result(patched->data, patched->len);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  svn_pool_destroy(pool);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> result;</div><div class="lin
e"><a name="l00214"></a><span class="lineno"> 214</span> }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> } <span class="comment">// namespace svn {</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor">#endif // __STOUT_SVN_HPP__</span></div><div class="ttc" id="namespacesvn_html_af97eefc14cbcf6f81e217c6a9215cea9"><div class="ttname"><a href="namespacesvn.html#af97eefc14cbcf6f81e217c6a9215cea9">svn::diff</a></div><div class="ttdeci">Try< Diff > diff(const std::string &from, const std::string &to)</div><div class="ttdef"><b>Definition:</b> svn.hpp:72</div></div>
<div class="ttc" id="namespacesvn_html_a5569b236a707a703171ecedb92e8a57d"><div class="ttname"><a href="namespacesvn.html#a5569b236a707a703171ecedb92e8a57d">svn::initialize</a></div><div class="ttdeci">void initialize()</div><div class="ttdef"><b>Definition:</b> svn.hpp:45</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespacesvn_html_a018bb955e273aa2e6b6c950005ed6048"><div class="ttname"><a href="namespacesvn.html#a018bb955e273aa2e6b6c950005ed6048">svn::patch</a></div><div class="ttdeci">Try< std::string > patch(const std::string &s, const Diff &diff)</div><div class="ttdef"><b>Definition:</b> svn.hpp:157</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="structsvn_1_1Diff_html_a1574e4ddc745088321538f3162b6467b"><div class="ttname"><a href="structsvn_1_1Diff.html#a1574e4ddc745088321538f3162b6467b">svn::Diff::data</a></div><div class="ttdeci">std::string data</div><div class="ttdef"><b>Definition:</b> svn.hpp:35</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/symlink_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/symlink_8hpp_source.html b/content/api/latest/c++/symlink_8hpp_source.html
index 6d42829..7d869ac 100644
--- a/content/api/latest/c++/symlink_8hpp_source.html
+++ b/content/api/latest/c++/symlink_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="symlink_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span
></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="lin
e"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_INTERNAL_WINDOWS_SYMLINK_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_INTERNAL_WINDOWS_SYMLINK_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.
html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="reparsepoint_8hpp.html">stout/internal/windows/reparsepoint.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> 
<span class="keyword">namespace </span>windows {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Get the full / absolute path. Does not check for existence, and does not</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// resolve symlinks.</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a9a06fe58fd74d8f9fdcea8c061c70cc5"> 30</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="namespaceinternal_1_1windows.html#a9a06fe58fd74d8f9fdcea8c061c70cc5">fullpath</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00031"></a><span c
lass="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// First query for the buffer size required.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">const</span> DWORD length =</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ::GetFullPathNameW(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(path).data(), 0, <span class="keyword">nullptr</span>, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span> (length == 0) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <a class="code" h
ref="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Failed to retrieve fullpath buffer size"</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<wchar_t> buffer;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  buffer.reserve(static_cast<size_t>(length));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">const</span> DWORD result =</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ::GetFullPathNameW(<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a>(path).
data(), length, buffer.data(), <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span> (result == 0) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Failed to determine fullpath"</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="namespacestrings.html#a3fbaeb4d589c49ac115fab3412073ca7">strings::remove</a>(</div><div class="line"><a name="l00051"></
a><span class="lineno"> 51</span>  <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(std::wstring(buffer.data())),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  os::LONGPATH_PREFIX,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1containerizer_1_1paths.html#abb8ab3e62de157d1a7a81e08888ec30cabf80c29a65453b2615d8f9bd83f8f3d6">strings::Mode::PREFIX</a>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// Gets symlink data for a given path, if it exists.</span></div><div class="line"><a name
="l00058"></a><span class="lineno"> 58</span> <span class="comment">//</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// This turns out to be a very complicated task on Windows. The gist of it is</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// that we know that symlinks on Windows are implemented with the Reparse Point</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// API, and so the process is a matter of:</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">//</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// 1. Checking whether the attributes for the file/folder specified by the</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64<
/span> <span class="comment">// path have the reparse point bit set; all symlinks are implemented with</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// reparse points, so this bit should be on all symlinks.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// 2. Opening a file/folder handle for that path, instructing it specifically</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// to open a handle for the symlink (if the path points at a symlink) and</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// *not* the file the symlink points at (as is the default). Note that</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// file and folder ha
ndles are different, so we have a function that</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// chooses appropriately.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// 3. Using `DeviceIoControl` to obtain information about the handle for this</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// reparse point, which we can then query to figure out if it's a reparse</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// point that is owned by the symlink filesystem filter driver.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// 4. If it is, then we report that this path does point at a symlink.</span></div><div class="line"><a name="l00075"></a><s
pan class="lineno"> 75</span> <span class="comment">//</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// NOTE: it may be helpful to consult the documentation for each of these</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// functions, as they give you sources that justify the arguments to the</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// obscure APIs we call to get this all working.</span></div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a39ca8fa0643b489f6bef951bef207c92"> 79</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SymbolicLink></a> <a class="code" href="namespaceinternal_1_1windows.html#a39ca8fa0643b489f6bef951bef207c92">query_symbolic_link_data</
a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Convert to absolute path because Windows APIs expect it.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> <a class="code" href="classResult.html">Result<std::string></a> absolute_path = <a class="code" href="namespaceinternal_1_1windows.html#a9a06fe58fd74d8f9fdcea8c061c70cc5">fullpath</a>(path);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (!absolute_path.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
<span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(absolute_path.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Windows has no built-in way to tell whether a path points at a symbolic</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// link; but, we know that symbolic links are implemented with reparse</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// points, so we begin by checking that.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href=
"classTry.html">Try<bool></a> is_reparse_point = <a class="code" href="namespaceinternal_1_1windows.html#a9205fe9be7dc028375cd24338483152b">reparse_point_attribute_set</a>(</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  ::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(absolute_path.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (is_reparse_point.isError()) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(is_reparse_point.error());</div><div class="line"><a name="l00095"></a><span class="lineno"
> 95</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!is_reparse_point.get()) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="stringliteral">"Reparse point attribute is not set for path '"</span> + absolute_path.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>() +</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="stringliteral">"', and therefore it is not a symbolic link"</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><sp
an class="lineno"> 101</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<SharedHandle></a> symlink_handle =</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">get_handle_no_follow</a>(absolute_path.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (symlink_handle.isError()) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(symlink_handle.error());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="
line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Finally, retrieve symlink data for the handle, if any.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceinternal_1_1windows.html#a85f7e5d0197eeb93bde525379b8e14d6">get_symbolic_link_data</a>(symlink_handle.get().get_handle());</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> } <span class="comment">// namespace windows {</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00
114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor">#endif // __STOUT_INTERNAL_WINDOWS_SYMLINK_HPP__</span></div><div class="ttc" id="namespaceinternal_1_1windows_html_a9a06fe58fd74d8f9fdcea8c061c70cc5"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a9a06fe58fd74d8f9fdcea8c061c70cc5">internal::windows::fullpath</a></div><div class="ttdeci">Result< std::string > fullpath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> symlink.hpp:30</div></div>
<div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="namespaceinternal_1_1windows_html_a8ee4f75d803d8ed56ce760d8e1dfac14"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a8ee4f75d803d8ed56ce760d8e1dfac14">internal::windows::get_handle_no_follow</a></div><div class="ttdeci">Try< SharedHandle > get_handle_no_follow(const std::string &absolute_path)</div><div class="ttdef"><b>Definition:</b> reparsepoint.hpp:215</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classResult_html_a521adf96f5c27d26d6b1d580aae8aaee"><div class="ttname"><a href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">Result::error</a></div><div class="ttdeci">static Result< T > error(const std::string &message)</div><div class="ttdef"><b>Definition:</b> result.hpp:53</div></div>
<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:106</div></div>
[11/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/subprocess__windows_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/subprocess__windows_8hpp_source.html b/content/api/latest/c++/subprocess__windows_8hpp_source.html
index f789234..bf4b2ea 100644
--- a/content/api/latest/c++/subprocess__windows_8hpp_source.html
+++ b/content/api/latest/c++/subprocess__windows_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="subprocess__windows_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="co
mment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><
div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __PROCESS_WINDOWS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __PROCESS_WINDOWS_SUBPROCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <array></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><d
iv class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <glog/logging.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span cla
ss="preprocessor">#include <<a class="code" href="hashset_8hpp.html">stout/hashset.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="os_8hpp.html">stout/os.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a
class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">stout/os/environment.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <userEnv.h></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class
="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// NOTE: We are expecting that components of `argv` that need to be quoted</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// (for example, paths with spaces in them like `C:\"Program Files"\foo.exe`)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// to have been already quoted correctly before we generate `command`.</span></div><div class="line"><a name="l0
0045"></a><span class="lineno"> 45</span> <span class="comment">// Incorrectly-quoted command arguments will probably lead the child process</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// to terminate with an error. See also NOTE on `process::subprocess`.</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespaceprocess_1_1internal.html#af291711ccd03a2e0608df1c32cc28871"> 47</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<::internal::windows::ProcessData></a> <a class="code" href="namespaceprocess_1_1internal.html#af291711ccd03a2e0608df1c32cc28871">createChildProcess</a>(</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00049"></a><span clas
s="lineno"> 49</span>  <span class="keyword">const</span> std::vector<std::string>& argv,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a><std::map<std::string, std::string>>& <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> std::vector<Subprocess::ParentHook>& parent_hooks,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html">InputFileDescriptors</a>& stdinfds,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const<
/span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>& stdoutfds,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html">OutputFileDescriptors</a>& stderrfds)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">const</span> std::array<int_fd, 3> fds{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  stdinfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1InputFileDescriptors.html#a0a3f315345ef7b7ee6f3f1d4d337854d">read</a>, stdoutfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>, stde
rrfds.<a class="code" href="structprocess_1_1Subprocess_1_1IO_1_1OutputFileDescriptors.html#a5dabb8e3008efd61ce42478f260b54ac">write</a>};</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classTry.html">Try<::internal::windows::ProcessData></a> process_data =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f">::internal::windows::create_process</a>(</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  path,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  argv,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de27
92d74770ec2">environment</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">true</span>, <span class="comment">// Create suspended.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  fds);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// Close the child-ends of the file descriptors that are created</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// by this function.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>& fd, fds) {</div><div class="line"><a name="
l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (fd.is_valid()) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classTry.html">Try<Nothing></a> result = <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span cla
ss="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (process_data.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(process_data.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Run the pare
nt hooks.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = process_data-><a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">pid</a>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a>& hook, parent_hooks) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="classTry.html">Try<Nothing></a> parent_setup = hook.<a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html#aaf9ff141314d619cd65cd8ec9320fb7d">parent_setup</a>(pid);</div><div class="line"><a n
ame="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// If the hook callback fails, we shouldn't proceed with the</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// execution and hence the child process should be killed.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (parent_setup.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Attempt to kill the process. Since it is still in suspended state, we</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// do not need to kill any descendents. We also can't
use `os::kill_job`</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// because this process is not in a Job Object unless one of the parent</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// hooks added it.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  ::TerminateProcess(process_data-><a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">process_handle</a>.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), 1);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name=
"l00097"></a><span class="lineno"> 97</span>  <span class="stringliteral">"Failed to execute Parent Hook in child '"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) +</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="stringliteral">"' with command '"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(argv) + <span class="stringliteral">"': "</span> +</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  parent_setup.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="li
neno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Start child process.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (::ResumeThread(process_data-><a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a7160cf48fc6e70d9390233b246b93bee">thread_handle</a>.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>()) == -1) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="stringliteral">"Failed to resume child process with command '"</span> +</div><div class="line"><a name="l00107"></a><span class="lineno"> 107<
/span>  <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(argv) + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> process_data;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> } <span class="comment">// namespace process {</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115
</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#endif // __PROCESS_WINDOWS_SUBPROCESS_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="classSharedHandle_html_a800385e17e17cb826147968e748fd8fa"><div class="ttname"><a href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">SharedHandle::get_handle</a></div><div class="ttdeci">HANDLE get_handle() const </div><div class="ttdef"><b>Definition:</b> windows.hpp:90</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/sunos_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/sunos_8hpp_source.html b/content/api/latest/c++/sunos_8hpp_source.html
index ad3d0ed..61d5912 100644
--- a/content/api/latest/c++/sunos_8hpp_source.html
+++ b/content/api/latest/c++/sunos_8hpp_source.html
@@ -52,11 +52,11 @@
<div class="title">sunos.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="sunos_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_SUNOS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_SUNOS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This file contains Solaris-only OS utilities.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __sun</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/sunos.hpp is only available on Solaris systems."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif</span></div><div class="line"><a name
="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <procfs.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sys/types.h></span> <span class="comment">// For pid_t.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor
">#include <string></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="prep
rocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="open_8hpp.html">stout/os/open.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </spa
n><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::string fn = <span class="stringliteral">"/proc/"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">"/status"</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</sp
an>  <span class="keyword">struct </span>pstatus pstatus;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classTry.html">Try<int_fd></a> fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(fn, O_RDONLY);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (fd.isError()) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Cannot open "</span> + fn);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l000
51"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(fd.get(), &pstatus, <span class="keyword">sizeof</span>(pstatus)) != <span class="keyword">sizeof</span>(pstatus)) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot read from "</span> + fn);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());<
/div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  fn = <span class="stringliteral">"/proc/"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">"/psinfo"</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">struct </span>psinfo psinfo;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(fn, O_RDONLY);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (fd.isError()) {</div><div class="line"><a name="l00062"></a><span class="lineno">
62</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Cannot open "</span> + fn);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(fd.get(), &psinfo, <span class="keyword">sizeof</span>(psinfo)) != <span class="keyword">sizeof</span>(psinfo)) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <
a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot read from "</span> + fn);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classTry.html">Try<Duration></a> <a class="code" href="namespaceos.html#a818327458964860a86fc8964e4795b4d">utime</a> =</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSeconds.html">Seconds</a>(pstatus.pr_utime.tv_sec) + <a class="code" href="classNanoseconds.html">Nanoseconds</a>(pstatus.pr_utime.tv_nsec);</div><div class="line"><a name="l00
073"></a><span class="lineno"> 73</span>  <a class="code" href="classTry.html">Try<Duration></a> stime =</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classSeconds.html">Seconds</a>(pstatus.pr_stime.tv_sec) + <a class="code" href="classNanoseconds.html">Nanoseconds</a>(pstatus.pr_stime.tv_nsec);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> Process(pstatus.pr_pid,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  pstatus.pr_ppid,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  pstatus.pr_ppid,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  pstatus.pr_sid,</div><div class="line"><a name="l00080">
</a><span class="lineno"> 80</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  utime.isSome() ? utime.get() : <a class="code" href="classOption.html#aca73609603df4687dba70c2a5df47ef8">Option<Duration>::none</a>(),</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  stime.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() ? stime.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() : <a class="code" href="classOption.html#aca73609603df4687dba70c2a5df47ef8">Option<Duration>::none</a>(),</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  psinfo.pr_fname,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  (psinfo.pr_nzomb == 0) &&</di
v><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  (psinfo.pr_nlwp == 0) &&</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  (psinfo.pr_lwp.pr_lwpid == 0));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// Reads from /proc and returns a list of all running processes.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><
a name="l00092"></a><span class="lineno"> 92</span>  std::set<pid_t> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classTry.html">Try<std::list<std::string></a>> entries = <a class="code" href="namespaceos.html#a5effa5ea3568d8c18e5c66039702dfa0">os::ls</a>(<span class="stringliteral">"/proc"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span> (entries.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Fa
iled to list files in /proc: "</span> + entries.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& entry, entries.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classTry.html">Try<pid_t></a> pid = numify<pid_t>(entry);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (pid.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class=
"line"><a name="l00102"></a><span class="lineno"> 102</span>  pids.insert(pid.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()); <span class="comment">// Ignore entries that can't be numified.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span> (!pids.empty()) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span cla
ss="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to determine pids from /proc"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Returns the total size of main and free memory.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Memory></a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a
name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot determine the size of total and free memory"</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#endif // __STOUT_OS_SUNOS_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Def
inition:</b> errorbase.hpp:35</div></div>
+<a href="sunos_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_SUNOS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_SUNOS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This file contains Solaris-only OS utilities.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __sun</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/sunos.hpp is only available on Solaris systems."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif</span></div><div class="line"><a name
="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <procfs.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sys/types.h></span> <span class="comment">// For pid_t.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor
">#include <string></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="prep
rocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="open_8hpp.html">stout/os/open.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </spa
n><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::string fn = <span class="stringliteral">"/proc/"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">"/status"</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</sp
an>  <span class="keyword">struct </span>pstatus pstatus;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classTry.html">Try<int_fd></a> fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(fn, O_RDONLY);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (fd.isError()) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Cannot open "</span> + fn);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l000
51"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(fd.get(), &pstatus, <span class="keyword">sizeof</span>(pstatus)) != <span class="keyword">sizeof</span>(pstatus)) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot read from "</span> + fn);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());<
/div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  fn = <span class="stringliteral">"/proc/"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid) + <span class="stringliteral">"/psinfo"</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">struct </span>psinfo psinfo;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(fn, O_RDONLY);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (fd.isError()) {</div><div class="line"><a name="l00062"></a><span class="lineno">
62</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Cannot open "</span> + fn);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(fd.get(), &psinfo, <span class="keyword">sizeof</span>(psinfo)) != <span class="keyword">sizeof</span>(psinfo)) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <
a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot read from "</span> + fn);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.get());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classTry.html">Try<Duration></a> <a class="code" href="namespaceos.html#a818327458964860a86fc8964e4795b4d">utime</a> =</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSeconds.html">Seconds</a>(pstatus.pr_utime.tv_sec) + <a class="code" href="classNanoseconds.html">Nanoseconds</a>(pstatus.pr_utime.tv_nsec);</div><div class="line"><a name="l00
073"></a><span class="lineno"> 73</span>  <a class="code" href="classTry.html">Try<Duration></a> stime =</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classSeconds.html">Seconds</a>(pstatus.pr_stime.tv_sec) + <a class="code" href="classNanoseconds.html">Nanoseconds</a>(pstatus.pr_stime.tv_nsec);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> Process(pstatus.pr_pid,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  pstatus.pr_ppid,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  pstatus.pr_ppid,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  pstatus.pr_sid,</div><div class="line"><a name="l00080">
</a><span class="lineno"> 80</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  utime.isSome() ? utime.get() : <a class="code" href="classOption.html#aca73609603df4687dba70c2a5df47ef8">Option<Duration>::none</a>(),</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  stime.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() ? stime.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() : <a class="code" href="classOption.html#aca73609603df4687dba70c2a5df47ef8">Option<Duration>::none</a>(),</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  psinfo.pr_fname,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  (psinfo.pr_nzomb == 0) &&</di
v><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  (psinfo.pr_nlwp == 0) &&</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  (psinfo.pr_lwp.pr_lwpid == 0));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// Reads from /proc and returns a list of all running processes.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><
a name="l00092"></a><span class="lineno"> 92</span>  std::set<pid_t> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="classTry.html">Try<std::list<std::string></a>> entries = <a class="code" href="namespaceos.html#a5effa5ea3568d8c18e5c66039702dfa0">os::ls</a>(<span class="stringliteral">"/proc"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span> (entries.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Fa
iled to list files in /proc: "</span> + entries.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& entry, entries.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classTry.html">Try<pid_t></a> pid = numify<pid_t>(entry);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (pid.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class=
"line"><a name="l00102"></a><span class="lineno"> 102</span>  pids.insert(pid.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()); <span class="comment">// Ignore entries that can't be numified.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span> (!pids.empty()) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span cla
ss="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to determine pids from /proc"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Returns the total size of main and free memory.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Memory></a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a
name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot determine the size of total and free memory"</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#endif // __STOUT_OS_SUNOS_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Def
inition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_aaf5d5468adc1b85cf9bb7126e70807ca"><div class="ttname"><a href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a></div><div class="ttdeci">Try< int_fd > open(const std::string &path, int oflag, mode_t mode=0)</div><div class="ttdef"><b>Definition:</b> open.hpp:35</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
[03/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2realpath_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2realpath_8hpp_source.html b/content/api/latest/c++/windows_2realpath_8hpp_source.html
index 28e8950..0094c71 100644
--- a/content/api/latest/c++/windows_2realpath_8hpp_source.html
+++ b/content/api/latest/c++/windows_2realpath_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="windows_2realpath_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment
">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div
class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_REALPATH_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_REALPATH_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="
code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="reparsepoint_8hpp.html">stout/internal/windows/reparsepoi
nt.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// This should behave like the POSIX `realpath` API: specifically it should</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// resolve symlinks in the path, and succeed only if the target file exists.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// This requires that the user has permissions to resolve each compone
nt of the</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// path.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">realpath</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<SharedHandle></a> handle = <a class="code" href="namespaceinternal_1_1windows.html#a5b261c85683d489b859236063e979e98">::internal::windows::get_handle_follow</a>(path);</div><div class="line"><a name="l00036"></a><span class="li
neno"> 36</span>  <span class="keywordflow">if</span> (handle.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(handle.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// First query for the buffer size required.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">const</span> DWORD length = ::GetFinalPathNameByHandleW(</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>
  handle.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>().<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), <span class="keyword">nullptr</span>, 0, FILE_NAME_NORMALIZED);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (length == 0) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Failed to retrieve realpath buffer size"</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  std::vector<wchar_t> buffer;</div><div class="line"><a na
me="l00048"></a><span class="lineno"> 48</span>  buffer.reserve(static_cast<size_t>(length));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  DWORD result = ::GetFinalPathNameByHandleW(</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  handle.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>().<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), buffer.data(), length, FILE_NAME_NORMALIZED);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (result == 0) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a clas
s="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Failed to determine realpath"</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <a class="code" href="namespacestrings.html#a3fbaeb4d589c49ac115fab3412073ca7">strings::remove</a>(</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(std::wstring(buffer.data())),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  os::LONGPATH_PREFIX,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1
containerizer_1_1paths.html#abb8ab3e62de157d1a7a81e08888ec30cabf80c29a65453b2615d8f9bd83f8f3d6">strings::Mode::PREFIX</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_REALPATH_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classSharedHandle_html_a800385e17e17cb826147968e748fd8fa"><div class="ttname"><a href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">SharedHandle::get_handle</a></div><div class="ttdeci">HANDLE get_handle() const </div><div class="ttdef"><b>Definition:</b> windows.hpp:90</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2rm_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2rm_8hpp_source.html b/content/api/latest/c++/windows_2rm_8hpp_source.html
index 4956bc5..8fee556 100644
--- a/content/api/latest/c++/windows_2rm_8hpp_source.html
+++ b/content/api/latest/c++/windows_2rm_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="windows_2rm_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</
span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="prep
rocessor">#ifndef __STOUT_OS_WINDOWS_RM_HPP__</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_RM_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno
"> 20</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="stat_8hpp.html">stout/os/stat.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="windows_2os_8hpp.html
">stout/windows/os.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span>windows {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span cla
ss="comment">// NOTE: File and directory deletion on Windows is an asynchronous operation,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// and there is no built-in way to "wait" on the deletion. So we wait by</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// checking for the path's existence until there is a "file not found" error.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Until the file is actually deleted, this will loop on an access denied error</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// (the file exists but has been marked for deletion).</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#ac9fbbbc8bb9b553f3ad
1abac7c9a81c3"> 38</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceinternal_1_1windows.html#ac9fbbbc8bb9b553f3ad1abac7c9a81c3">wait_on_delete</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Try for 1 second in 10 intervals of 100 ms.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 10; ++i) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// This should always fail if the file has been marked for deletion.</span></div><div class="line"><a name="l0
0043"></a><span class="lineno"> 43</span>  <span class="keyword">const</span> DWORD attributes =</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ::GetFileAttributesW(::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(path).data());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  CHECK_EQ(attributes, INVALID_FILE_ATTRIBUTES);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> DWORD <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = ::GetLastError();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (error == ERROR_ACCESS_DENIE
D) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  LOG(WARNING) << <span class="stringliteral">"Waiting for file "</span> << path << <span class="stringliteral">" to be deleted"</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="namespaceos.html#ab2b826c68a25af9e9ef47c570c36e137">os::sleep</a>(<a class="code" href="classMilliseconds.html">Milliseconds</a>(100));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (error == ERROR_FILE_NOT_FOUND) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// The file is truly gone, stop waiting.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span
> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(error);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Timed out when waiting for file "</span> + path + <span class="stringliteral">" to be deleted"</span>);</div><div class="line"
><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> } <span class="comment">// namespace windows {</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#ac1c8ce3595084d782
91f98c2be9f62ba">rm</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// This function uses either `RemoveDirectory` or `DeleteFile` to remove the</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// actual filesystem entry. These WinAPI functions are being used instead of</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// the POSIX `remove` because their behavior when it comes to symbolic links</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// is well documented in MSDN[1][2]. Whenever called on a symbolic link, both</span></div><div class="li
ne"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// `RemoveDirectory` and `DeleteFile` act on the symlink itself, rather than</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// its target.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">//</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// Because `RemoveDirectory` fails if the specified path is not an empty</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// directory, its behavior is consistent with the POSIX[3] `remove`[3] (which</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// uses `rmdir`[4]).</span></div><div class="line"><a name="l00079"></a><span class="lineno">
79</span>  <span class="comment">//</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa365488(v=vs.85).aspx</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa365682(v=vs.85).aspx#deletefile_and_deletefiletransacted</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// [3] http://pubs.opengroup.org/onlinepubs/009695399/functions/remove.html</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// [4] http://pubs.opengroup.org/onlinepubs/009695399/functions/rmdir.html</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">const</span> std::wst
ring <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a> = <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">::internal::windows::longpath</a>(path);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> BOOL result = <a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">os::stat::isdir</a>(path)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  ? ::RemoveDirectoryW(longpath.data())</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  : ::DeleteFileW(longpath.data());</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (!result) {</div><div class="line"><a name="l00090"></a><
span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// This wait is necessary because the `RemoveDirectory` API does not know to</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// wait for pending deletions of files in the directory, and can otherwise</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// immediately fail with "directory not empty" if there still exists a marked</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class
="comment">// for deletion but not yet deleted file. By making waiting synchronously, we</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// gain the behavior of the POSIX API.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classTry.html">Try<Nothing></a> deleted = <a class="code" href="namespaceinternal_1_1windows.html#ac9fbbbc8bb9b553f3ad1abac7c9a81c3">::internal::windows::wait_on_delete</a>(path);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (deleted.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"wait_on_delete failed "
;</span> + deleted.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_RM_HPP__</span><
/div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_html_ac1c8ce3595084d78291f98c2be9f62ba"><div class="ttname"><a href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a></div><div class="ttdeci">Try< Nothing > rm(const std::string &path)</div><div class="ttdef"><b>Definition:</b> rm.hpp:26</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_ab2b826c68a25af9e9ef47c570c36e137"><div class="ttname"><a href="namespaceos.html#ab2b826c68a25af9e9ef47c570c36e137">os::sleep</a></div><div class="ttdeci">Try< Nothing > sleep(const Duration &duration)</div><div class="ttdef"><b>Definition:</b> os.hpp:234</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2rmdir_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2rmdir_8hpp_source.html b/content/api/latest/c++/windows_2rmdir_8hpp_source.html
index ff3b238..fd5169e 100644
--- a/content/api/latest/c++/windows_2rmdir_8hpp_source.html
+++ b/content/api/latest/c++/windows_2rmdir_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="namespaceos_html_a69b3969276ffa4cb698b9431ee43bd7c"><div class="ttname"><a href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a></div><div class="ttdeci">bool exists(const std::string &path)</div><div class="ttdef"><b>Definition:</b> exists.hpp:26</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a178d1c99fc88dae58f9a5fc4fc3167d5"><div class="ttname"><a href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5">os::stat::isfile</a></div><div class="ttdeci">bool isfile(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:106</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_html_ac1c8ce3595084d78291f98c2be9f62ba"><div class="ttname"><a href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a></div><div class="ttdeci">Try< Nothing > rm(const std::string &path)</div><div class="ttdef"><b>Definition:</b> rm.hpp:26</div></div>
<div class="ttc" id="classSharedHandle_html"><div class="ttname"><a href="classSharedHandle.html">SharedHandle</a></div><div class="ttdef"><b>Definition:</b> windows.hpp:72</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a0ba4d272b938da76e404648103077480"><div class="ttname"><a href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">os::stat::islink</a></div><div class="ttdeci">bool islink(const std::string &path)</div><div class="ttdef"><b>Definition:</b> stat.hpp:78</div></div>
[40/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/errorbase_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/errorbase_8hpp_source.html b/content/api/latest/c++/errorbase_8hpp_source.html
index 30c0051..7c31edb 100644
--- a/content/api/latest/c++/errorbase_8hpp_source.html
+++ b/content/api/latest/c++/errorbase_8hpp_source.html
@@ -52,19 +52,21 @@
<div class="title">errorbase.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="errorbase_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</sp
an></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="l
ine"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_ERROR_BASE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_ERROR_BASE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="strerror_8hpp.html">stout/os/strerr
or.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// A useful type that can be used to represent a Try that has</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// failed. You can also use 'ErrnoError' to append the error message</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// associated with the current 'errno' to your own error message.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Examples:</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="commen
t">//</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Result<int> result = Error("uninitialized");</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Try<std::string> = Error("uninitialized");</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">//</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// void foo(Try<std::string> t) {}</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// foo(Error("some error here"));</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </di
v><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classError.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5"> 38</a></span>  <span class="keyword">explicit</span> <a class="code" href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error</a>(<span class="keyword">const</span> std::string& _message) : <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>(_message) {}</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class=
"lineno"><a class="line" href="classError.html#a0de534f1aadb16a4d5321370f3fd2929"> 40</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classError.html#a0de534f1aadb16a4d5321370f3fd2929">operator==</a>(<span class="keyword">const</span> <a class="code" href="classError.html">Error</a>& that)<span class="keyword"> const</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a> == that.<a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></
a><span class="lineno"><a class="line" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f"> 45</a></span>  <span class="keyword">const</span> std::string <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classErrnoError.html"> 49</a></span> <span class="keyword">class </span><a class="code" href="classErrnoError.html">ErrnoError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span clas
s="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classErrnoError.html#a4f09179e3135d75e2fec6cc27738b850"> 52</a></span>  <a class="code" href="classErrnoError.html#a4f09179e3135d75e2fec6cc27738b850">ErrnoError</a>() : <a class="code" href="classErrnoError.html">ErrnoError</a>(errno) {}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classErrnoError.html#a776ccad895cf5e485e50b7e9b4314a58"> 54</a></span>  <span class="keyword">explicit</span> <a class="code" href="classErrnoError.html#a776ccad895cf5e485e50b7e9b4314a58">ErrnoError</a>(<span class="keywordtype">int</span> _code) : <a class="code" href="classError.html">Error</a>(<a class="code" href="namespaceos.html">os</a>::<a class="code" href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">strerror</a>(_code)), code(_code) {}</
div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classErrnoError.html#a89f63f911e2a6fc8b830e69085283ee3"> 56</a></span>  <span class="keyword">explicit</span> <a class="code" href="classErrnoError.html#a89f63f911e2a6fc8b830e69085283ee3">ErrnoError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  : <a class="code" href="classErrnoError.html">ErrnoError</a>(errno, message) {}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classErrnoError.html#aa971258da649d454025c8cb89fc97ef6"> 59</a></span>  <a class="code" href="classErrnoError.html#aa971258da649d454
025c8cb89fc97ef6">ErrnoError</a>(<span class="keywordtype">int</span> _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  : <a class="code" href="classError.html">Error</a>(message + <span class="stringliteral">": "</span> + <a class="code" href="namespaceos.html">os</a>::<a class="code" href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">strerror</a>(_code)), code(_code) {}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6"> 62</a></span>  <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6">code</a>;</div><div cl
ass="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif // __STOUT_ERROR_BASE_HPP__</span></div><div class="ttc" id="namespaceos_html_aa9ac22b4028f187826a9861373006abf"><div class="ttname"><a href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">os::strerror</a></div><div class="ttdeci">std::string strerror(int errno_)</div><div class="ttdoc">A thread-safe version of strerror. </div><div class="ttdef"><b>Definition:</b> strerror.hpp:30</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
-<div class="ttc" id="classError_html_a8e2d6ac199136b5c2d58b4879c0c80f5"><div class="ttname"><a href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error::Error</a></div><div class="ttdeci">Error(const std::string &_message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:38</div></div>
-<div class="ttc" id="classErrnoError_html_aa971258da649d454025c8cb89fc97ef6"><div class="ttname"><a href="classErrnoError.html#aa971258da649d454025c8cb89fc97ef6">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError(int _code, const std::string &message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:59</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<a href="errorbase_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</sp
an></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="l
ine"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_ERROR_BASE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_ERROR_BASE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <ostream></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021
"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="strerror_8hpp.html">stout/os/strerror.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// A useful type that can be used to represent a Try that has</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// failed. You can also use 'ErrnoError' to append the error message</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// associated with the current 'errno' to your own error message.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">//</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <s
pan class="comment">// Examples:</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">//</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Result<int> result = Error("uninitialized");</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Try<std::string> = Error("uninitialized");</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// void foo(Try<std::string> t) {}</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment
">// foo(Error("some error here"));</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classError.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5"> 39</a></span>  <span class="keyword">explicit</span> <a class="code" href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error</a>(<span class="keyword">const</span> std::string& _message) : <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>(_message) {
}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classError.html#a0de534f1aadb16a4d5321370f3fd2929"> 41</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classError.html#a0de534f1aadb16a4d5321370f3fd2929">operator==</a>(<span class="keyword">const</span> <a class="code" href="classError.html">Error</a>& that)<span class="keyword"> const</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a> == that.<a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44<
/span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f"> 46</a></span>  <span class="keyword">const</span> std::string <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classErrnoError.html"> 50</a></span> <span class="keyword">class </span><a class="code" href="classErrnoError.html">ErrnoError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l000
51"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classErrnoError.html#a4f09179e3135d75e2fec6cc27738b850"> 53</a></span>  <a class="code" href="classErrnoError.html#a4f09179e3135d75e2fec6cc27738b850">ErrnoError</a>() : <a class="code" href="classErrnoError.html">ErrnoError</a>(errno) {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classErrnoError.html#a776ccad895cf5e485e50b7e9b4314a58"> 55</a></span>  <span class="keyword">explicit</span> <a class="code" href="classErrnoError.html#a776ccad895cf5e485e50b7e9b4314a58">ErrnoError</a>(<span class="keywordtype">int</span> _code) : <a class="code" href="classError.html">Error</a>(<a class="code" hr
ef="namespaceos.html">os</a>::<a class="code" href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">strerror</a>(_code)), code(_code) {}</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classErrnoError.html#a89f63f911e2a6fc8b830e69085283ee3"> 57</a></span>  <span class="keyword">explicit</span> <a class="code" href="classErrnoError.html#a89f63f911e2a6fc8b830e69085283ee3">ErrnoError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  : <a class="code" href="classErrnoError.html">ErrnoError</a>(errno, message) {}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href
="classErrnoError.html#aa971258da649d454025c8cb89fc97ef6"> 60</a></span>  <a class="code" href="classErrnoError.html#aa971258da649d454025c8cb89fc97ef6">ErrnoError</a>(<span class="keywordtype">int</span> _code, <span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  : <a class="code" href="classError.html">Error</a>(message + <span class="stringliteral">": "</span> + <a class="code" href="namespaceos.html">os</a>::<a class="code" href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">strerror</a>(_code)), code(_code) {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6"> 63</a></span>  <span class="keyword">const</s
pan> <span class="keywordtype">int</span> <a class="code" href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6">code</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0"> 67</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0">operator<<</a>(std::ostream& stream, <span class="keyword">const</span> <a class="code" href="classError.html">Error</a>& <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>)</div><div class="line"><a name="l00068"></a><span class="l
ineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> stream << error.<a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif // __STOUT_ERROR_BASE_HPP__</span></div><div class="ttc" id="namespaceos_html_aa9ac22b4028f187826a9861373006abf"><div class="ttname"><a href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">os::strerror</a></div><div class="ttdeci">std::string strerror(int errno_)</div><div class="ttdoc">A thread-safe version of strerror. </div><div class="ttdef"><b>Definition:</b> strerror.hpp:30</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
+<div class="ttc" id="classError_html_a8e2d6ac199136b5c2d58b4879c0c80f5"><div class="ttname"><a href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error::Error</a></div><div class="ttdeci">Error(const std::string &_message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:39</div></div>
+<div class="ttc" id="classErrnoError_html_aa971258da649d454025c8cb89fc97ef6"><div class="ttname"><a href="classErrnoError.html#aa971258da649d454025c8cb89fc97ef6">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError(int _code, const std::string &message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:60</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
-<div class="ttc" id="classErrnoError_html_a89f63f911e2a6fc8b830e69085283ee3"><div class="ttname"><a href="classErrnoError.html#a89f63f911e2a6fc8b830e69085283ee3">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError(const std::string &message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:56</div></div>
+<div class="ttc" id="classErrnoError_html_a89f63f911e2a6fc8b830e69085283ee3"><div class="ttname"><a href="classErrnoError.html#a89f63f911e2a6fc8b830e69085283ee3">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError(const std::string &message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:57</div></div>
<div class="ttc" id="strerror_8hpp_html"><div class="ttname"><a href="strerror_8hpp.html">strerror.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html_a4f09179e3135d75e2fec6cc27738b850"><div class="ttname"><a href="classErrnoError.html#a4f09179e3135d75e2fec6cc27738b850">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError()</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:52</div></div>
-<div class="ttc" id="classError_html_a0de534f1aadb16a4d5321370f3fd2929"><div class="ttname"><a href="classError.html#a0de534f1aadb16a4d5321370f3fd2929">Error::operator==</a></div><div class="ttdeci">bool operator==(const Error &that) const </div><div class="ttdef"><b>Definition:</b> errorbase.hpp:40</div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
-<div class="ttc" id="classErrnoError_html_ae512d4301c6ef39767a39a5636810ff6"><div class="ttname"><a href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6">ErrnoError::code</a></div><div class="ttdeci">const int code</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:62</div></div>
-<div class="ttc" id="classErrnoError_html_a776ccad895cf5e485e50b7e9b4314a58"><div class="ttname"><a href="classErrnoError.html#a776ccad895cf5e485e50b7e9b4314a58">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError(int _code)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:54</div></div>
+<div class="ttc" id="classErrnoError_html_a4f09179e3135d75e2fec6cc27738b850"><div class="ttname"><a href="classErrnoError.html#a4f09179e3135d75e2fec6cc27738b850">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError()</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:53</div></div>
+<div class="ttc" id="classError_html_a0de534f1aadb16a4d5321370f3fd2929"><div class="ttname"><a href="classError.html#a0de534f1aadb16a4d5321370f3fd2929">Error::operator==</a></div><div class="ttdeci">bool operator==(const Error &that) const </div><div class="ttdef"><b>Definition:</b> errorbase.hpp:41</div></div>
+<div class="ttc" id="errorbase_8hpp_html_ae45822aef5901508793415fff642bef0"><div class="ttname"><a href="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0">operator<<</a></div><div class="ttdeci">std::ostream & operator<<(std::ostream &stream, const Error &error)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:67</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
+<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &msg, uint32_t code)</div></div>
+<div class="ttc" id="classErrnoError_html_ae512d4301c6ef39767a39a5636810ff6"><div class="ttname"><a href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6">ErrnoError::code</a></div><div class="ttdeci">const int code</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:63</div></div>
+<div class="ttc" id="classErrnoError_html_a776ccad895cf5e485e50b7e9b4314a58"><div class="ttname"><a href="classErrnoError.html#a776ccad895cf5e485e50b7e9b4314a58">ErrnoError::ErrnoError</a></div><div class="ttdeci">ErrnoError(int _code)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:55</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/fetch_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/fetch_8hpp_source.html b/content/api/latest/c++/fetch_8hpp_source.html
index d059a38..f831cec 100644
--- a/content/api/latest/c++/fetch_8hpp_source.html
+++ b/content/api/latest/c++/fetch_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="fetch_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_FLAGS_FETCH_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_FLAGS_FETCH_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sstream></span> <span class="comment">// For istringstream.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>></span></div><div class=
"line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span cl
ass="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">stout/flags/parse.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">stout/os/read.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespaceflags.html">flags</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno">
32</span> <span class="comment">// Allow the value for a flag to be fetched/resolved from a URL such</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// as file://foo/bar/baz. Use template specialization to add a custom</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// fetcher for a given type, such as Path from <stout/path.hpp> Path</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// has a custom fetcher so that it returns the path given rather than</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// the value read from that path.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class=
"line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceflags.html#a27c0d145bbd7c2870512fd59a50222d9"> 38</a></span> <a class="code" href="classTry.html">Try<T></a> <a class="code" href="namespaceflags.html#a27c0d145bbd7c2870512fd59a50222d9">fetch</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// If the flag value corresponds to a file indicated by file://</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// fetch and then parse the contents of that file.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="commen
t">// TODO(cmaloney): Introduce fetching for things beyond just file://</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// such as http:// as well!</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(value, <span class="stringliteral">"file://"</span>)) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> std::string <a class="code" href="namespacepath.html">path</a> = value.substr(7);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacemesos_1_1intern
al_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a> = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(path);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (read.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Error reading file '"</span> + path + <span class="stringliteral">"': "</span> + read.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053
"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> parse<T>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> parse<T>(value);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespaceflags.h
tml#a2b526cb7a619bb46ffae7507bdeb506c"> 61</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Path></a> <a class="code" href="namespaceflags.html#a27c0d145bbd7c2870512fd59a50222d9">fetch</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Explicitly skip fetching the file if this is for a Path flag!</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> parse<Path>(value);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a nam
e="l00068"></a><span class="lineno"> 68</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespaceflags.html#a11612267e8d260bbfffeed65758d4faf"> 69</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<SecurePathOrValue></a> <a class="code" href="namespaceflags.html#a27c0d145bbd7c2870512fd59a50222d9">fetch</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Delegates fetching the value to its `parse` function so the two</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// values, the path and its contents are available when constructing</span></div><div class="line"><a name=
"l00073"></a><span class="lineno"> 73</span>  <span class="comment">// and instance of `SecurePathOrValue`.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> parse<SecurePathOrValue>(value);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> } <span class="comment">// namespace flags {</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#endif // __STOUT_FLAGS_FETCH_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div
>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">parse.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/files_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/files_8hpp_source.html b/content/api/latest/c++/files_8hpp_source.html
index c1aa66b..ada020a 100644
--- a/content/api/latest/c++/files_8hpp_source.html
+++ b/content/api/latest/c++/files_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="files_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span class
="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distributed
under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __FILES_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __FILES_HPP__</span></div><div class="line"><a name="l00019"></a><s
pan class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2authorizer_2authorizer_8hpp.html">mesos/authorizer/authorizer.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="future_8hpp.html">process/future.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/ht
tp.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="format_8hpp.html">stout/format.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l
00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="protobuf__utils_8hpp.html">common/protobuf_utils.hpp</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</
span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// Forward declarations.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>FilesProcess;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// Represents the various errors that can be returned by methods on the `Files`</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// class via a `Try` that has failed.</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html"> 45</a></span> <span class="keyword">class </span><a class="code" hre
f="classmesos_1_1internal_1_1FilesError.html">FilesError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1"> 48</a></span>  <span class="keyword">enum</span> <a class="code" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1">Type</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1aa741e894029f1c8e90a96157e2a8431a"> 50</a></span>  <a c
lass="code" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1aa741e894029f1c8e90a96157e2a8431a">INVALID</a>, <span class="comment">// Invalid argument.</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1acfc988478adbf124c28fc4aca33655d5"> 51</a></span>  <a class="code" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1acfc988478adbf124c28fc4aca33655d5">NOT_FOUND</a>, <span class="comment">// Not found.</span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1afb32cf154932d1480e90409508c14169"> 52</a></span>  <a class="code" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1afb32cf154932d1480e90409508c14169">UNAUTHORIZED</a>, <span
class="comment">// Not authorized to perform the operation.</span></div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1a8ebd647d75794b12cc0826f2b4761761"> 53</a></span>  <a class="code" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1a8ebd647d75794b12cc0826f2b4761761">UNKNOWN</a> <span class="comment">// Internal error/all other errors.</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#a8b51d297cb0ebb4b7d44cd4a8f343da6"> 56</a></span>  <a class="code" href="classmesos_1_1internal_1_1FilesError.html#a8b51d297cb0ebb4b7d44cd4a8f343da6">FilesError</a>(<a class="code"
href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1">Type</a> _type)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  : <a class="code" href="classError.html">Error</a>(<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(_type)), <a class="code" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4">type</a>(_type) {}</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#a3376a64097330c2f042e0b8d36e92531"> 59</a></span>  <a class="code" href="classmesos_1_1internal_1_1FilesError.html#a3376a64097330c2f042e0b8d36e92531">FilesError</a>(<a class="code" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1">Type</a> _type, <span class="keyword">const</span> std::stri
ng& _message)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  : <a class="code" href="classError.html">Error</a>(<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(_type)), <a class="code" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4">type</a>(_type), <a class="code" href="classmesos_1_1internal_1_1FilesError.html#a470c1ef5e1dc129752806b42a7544efe">message</a>(_message) {}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4"> 62</a></span>  <a class="code" href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1">Type</a> <a class="code" href="classmesos_1_1internal_1_1FilesError.html#aef08f763f1a964529d6e612e5ab49db4">type</a>;</div><div class
="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1FilesError.html#a470c1ef5e1dc129752806b42a7544efe"> 63</a></span>  std::string <a class="code" href="classmesos_1_1internal_1_1FilesError.html#a470c1ef5e1dc129752806b42a7544efe">message</a>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// Provides an abstraction for browsing and reading files via HTTP</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// endpoints. A path (file or directory) may be "attached" to a virtual path</span></div><div class="line"><a name="l00069"></a><span class="lineno">
69</span> <span class="comment">// (similar to "mounting" a device) for subsequent browsing and</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// reading of any files and directories it contains. The "mounting" of</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// paths to virtual paths enables us to do a form of chrooting for better</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// security and isolation of files.</span></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1Files.html"> 73</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1Files.html">Files</a></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class
="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="classmesos_1_1internal_1_1Files.html">Files</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& authenticationRealm = <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<mesos::Authorizer*></a>& authorizer = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  ~<a class="code" href="classmesos_1_1internal_1_1Files.html">Files</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080
"></a><span class="lineno"> 80</span>  <span class="comment">// Returns the result of trying to attach the specified path</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// (directory or file) at the specified virtual path.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a3ae22bb34cae1ea9e5d0a30cafeb0d4f">attach</a>(</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">const</span> std::string& virtualPath,</div><div class="line"><a name="l00085"></a><span class="line
no"> 85</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a><lambda::function<<a class="code" href="classprocess_1_1Future.html">process::Future<bool></a>(</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<process::http::authentication::Principal></a>&)>>&</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  authorized = <a class="code" href="structNone.html">None</a>());</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// Removes the specified virtual path.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">void</span> detach(<
span class="keyword">const</span> std::string& virtualPath);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// Returns a file listing for a directory similar to `ls -l`.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Try<std::list<FileInfo></a>, <a class="code" href="classmesos_1_1internal_1_1FilesError.html">FilesError</a>>> browse(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">const</span> std::string& path,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<process::http::authentication::Principal></a>& principa
l);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// Returns the size and data of file.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Try<std::tuple<size_t, std::string></a>, <a class="code" href="classmesos_1_1internal_1_1FilesError.html">FilesError</a>>> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a>(</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> offset,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<size
_t></a>& length,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">const</span> std::string& path,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<process::http::authentication::Principal></a>& principal);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  FilesProcess* <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> };</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a
name="l00108"></a><span class="lineno"> 108</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#endif // __FILES_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="classmesos_1_1internal_1_1FilesError_html_ace93cf1c2ae2be0671102df57ed0b5a1"><div class="ttname"><a href="classmesos_1_1internal_1_1FilesError.html#ace93cf1c2ae2be0671102df57ed0b5a1">mesos::internal::FilesError::Type</a></div><div class="ttdeci">Type</div><div class="ttdef"><b>Definition:</b> files.hpp:48</div></div>
<div class="ttc" id="classmesos_1_1internal_1_1FilesError_html"><div class="ttname"><a href="classmesos_1_1internal_1_1FilesError.html">mesos::internal::FilesError</a></div><div class="ttdef"><b>Definition:</b> files.hpp:45</div></div>
[34/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/lib__logrotate_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/lib__logrotate_8hpp_source.html b/content/api/latest/c++/lib__logrotate_8hpp_source.html
index 4c0939d..aee4fd9 100644
--- a/content/api/latest/c++/lib__logrotate_8hpp_source.html
+++ b/content/api/latest/c++/lib__logrotate_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="lib__logrotate_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><s
pan class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// di
stributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __SLAVE_CONTAINER_LOGGER_LIB_LOGROTATE_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __SLAVE_CONTAINER_LOGGER_LI
B_LOGROTATE_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="slave_2container__logger_8hpp.html">mesos/slave/container_logger.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2slave_2containerizer_8hpp.html">mesos/slave/containerizer.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#
include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2constants_8hpp.html">stout/os/constants.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="exists_8hpp.html">stout/
os/exists.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="logrotate_8hpp.html">slave/container_loggers/logrotate.hpp</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</d
iv><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger.html"> 38</a></span> <span class="keyword">namespace </span>logger {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span>LogrotateContainerLoggerProcess;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>
 <span class="comment">// These flags are loaded twice: once when the `ContainerLogger` module</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// is created and each time before launching containers. The flags loaded</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// at module creation act as global default values, whereas flags loaded</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// prior to containers can override the global values.</span></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html"> 48</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html">LoggerFlags</a> : <span class="keyword">public</span> <span class="keyword"
>virtual</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a1652e5364feb93134ce12474b77e4bbc"> 50</a></span>  <a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a1652e5364feb93134ce12474b77e4bbc">LoggerFlags</a>()</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a01e0b855bccba47e5e8cf51923c043dd">LoggerFlags::max_stdout_size</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span
>  <span class="stringliteral">"max_stdout_size"</span>,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="stringliteral">"Maximum size, in bytes, of a single stdout log file.\n"</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="stringliteral">"Defaults to 10 MB. Must be at least 1 (memory) page."</span>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="bytes_8hpp.html#a5d8fe3ccbf9cafff06846c05b3ca864b">Megabytes</a>(10),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  &<a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a6f16e6c1a4ea3d53a938706f9d215fdf">LoggerFlags::validateSize</a>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a
name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a701cd92419a47af88b8b3e69596dc9fe">LoggerFlags::logrotate_stdout_options</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="stringliteral">"logrotate_stdout_options"</span>,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="stringliteral">"Additional config options to pass into 'logrotate' for stdout.\n"</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="stringliteral">"This string will be inserted into a 'logrotate' configuration file.\n"</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <
span class="stringliteral">"i.e.\n"</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="stringliteral">" /path/to/stdout {\n"</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="stringliteral">" <logrotate_stdout_options>\n"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="stringliteral">" size <max_stdout_size>\n"</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="stringliteral">" }\n"</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="stringliteral">"NOTE: The 'size' option will be overridden by this module."</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> 
</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a324f6d7bd9a854fb74465d84cbfffd46">LoggerFlags::max_stderr_size</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="stringliteral">"max_stderr_size"</span>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="stringliteral">"Maximum size, in bytes, of a single stderr log file.\n"</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="stringliteral">"Defaults to 10 MB. Must be at least 1 (memory) page."</span>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="bytes_8hpp.
html#a5d8fe3ccbf9cafff06846c05b3ca864b">Megabytes</a>(10),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  &<a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a6f16e6c1a4ea3d53a938706f9d215fdf">LoggerFlags::validateSize</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a07b215b9a9fb3a2fae1671574314e2d2">LoggerFlags::logrotate_stderr_options</a>,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">"logrotate_stderr_options"</span>,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="stringl
iteral">"Additional config options to pass into 'logrotate' for stderr.\n"</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="stringliteral">"This string will be inserted into a 'logrotate' configuration file.\n"</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="stringliteral">"i.e.\n"</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="stringliteral">" /path/to/stderr {\n"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="stringliteral">" <logrotate_stderr_options>\n"</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="stringliteral">" size <max_stderr_size>\n"</span></div><div class="line"><a
name="l00085"></a><span class="lineno"> 85</span>  <span class="stringliteral">" }\n"</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="stringliteral">"NOTE: The 'size' option will be overridden by this module."</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a6f16e6c1a4ea3d53a938706f9d215fdf"> 89</a></span>  <span class="keyword">static</span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a6f16e6c1a4ea3d53a938706f9d215fdf">validateSize</a>(<span class="keyword">const</span> <a class="code" href="classBytes.html"
>Bytes</a>& value)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (value.<a class="code" href="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c">bytes</a>() < <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>()) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="stringliteral">"Expected --max_stdout_size and --max_stderr_size of "</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="stringliteral">"at least "</span> + <a class="code" href="namespacens.html#a28116b4
6e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>()) + <span class="stringliteral">" bytes"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a01e0b855bccba47e5e8cf51923c043dd"> 100</a></span>  <a class="code" href="classBytes.html">Bytes</a> <a class="code" href="structmesos
_1_1internal_1_1logger_1_1LoggerFlags.html#a01e0b855bccba47e5e8cf51923c043dd">max_stdout_size</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a701cd92419a47af88b8b3e69596dc9fe"> 101</a></span>  <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a701cd92419a47af88b8b3e69596dc9fe">logrotate_stdout_options</a>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a324f6d7bd9a854fb74465d84cbfffd46"> 103</a></span>  <a class="code" href="classBytes.html">Bytes</a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a324f6d7bd9a854fb74465d84cbfffd46">max_stderr_size</a>;</div><div class="line"
><a name="l00104"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a07b215b9a9fb3a2fae1671574314e2d2"> 104</a></span>  <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a07b215b9a9fb3a2fae1671574314e2d2">logrotate_stderr_options</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1Flags.html"> 108</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html">Flags</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a c
lass="code" href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html">LoggerFlags</a></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1Flags.html#afe7186ad5e403a2afd95cf7021f4d195"> 110</a></span>  <a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#afe7186ad5e403a2afd95cf7021f4d195">Flags</a>()</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a4a5d15a242a55783cf676b2fa799e360">Flags::environment_variable_prefix</a>,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <sp
an class="stringliteral">"environment_variable_prefix"</span>,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="stringliteral">"Prefix for environment variables meant to modify the behavior of\n"</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="stringliteral">"the logrotate logger for the specific container being launched.\n"</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="stringliteral">"The logger will look for four prefixed environment variables in the\n"</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="stringliteral">"container's 'CommandInfo's 'Environment':\n"</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="s
tringliteral">" * MAX_STDOUT_SIZE\n"</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="stringliteral">" * LOGROTATE_STDOUT_OPTIONS\n"</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="stringliteral">" * MAX_STDERR_SIZE\n"</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="stringliteral">" * LOGROTATE_STDERR_OPTIONS\n"</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="stringliteral">"If present, these variables will overwrite the global values set\n"</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="stringliteral">"via module parameters."</span>,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>
  <span class="stringliteral">"CONTAINER_LOGGER_"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a68a07a76e5b8842c754852a424d12525">Flags::launcher_dir</a>,</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="stringliteral">"launcher_dir"</span>,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="stringliteral">"Directory path of Mesos binaries. The logrotate container logger\n"</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="stringliteral">"will find the '"</span>
+ <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854">mesos::internal::logger::rotate::NAME</a> + <span class="stringliteral">"'\n"</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="stringliteral">"binary file under this directory."</span>,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  PKGLIBEXECDIR,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  [](<span class="keyword">const</span> std::string& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  std::string executablePath =</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="namespacepath.html#aa86b16a2171cec90bb333793
0513ef0f">path::join</a>(value, <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854">mesos::internal::logger::rotate::NAME</a>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a>(executablePath)) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot find: "</span> + executablePath);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><s
pan class="lineno"> 140</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  });</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#abd0de016d5754244dccafb3d0311bf1c">Flags::logrotate_path</a>,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="stringliteral">"logrotate_path"</span>,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="stringliteral">"If specified, the logrotate container logger will use the specified\n"</span><
/div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="stringliteral">"'logrotate' instead of the system's 'logrotate'."</span>,</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="stringliteral">"logrotate"</span>,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  [](<span class="keyword">const</span> std::string& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// Check if `logrotate` exists via the help command.</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// TODO(josephw): Consider a more comprehensive check.</span></div><div class="line"><a name="l00151"></a><span class="lineno
"> 151</span>  <a class="code" href="classTry.html">Try<std::string></a> helpCommand =</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="namespaceos.html#a0d86320d7799ea761599bc356c02a4fa">os::shell</a>(value + <span class="stringliteral">" --help > "</span> + <a class="code" href="namespaceos.html#a8d90278daa51c4fe9fcb9e54757187b5">os::DEV_NULL</a>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span> (helpCommand.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00156"></a
><span class="lineno"> 156</span>  <span class="stringliteral">"Failed to check logrotate: "</span> + helpCommand.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  });</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1in
ternal_1_1logger_1_1Flags.html#a70d12161362a3aa5da5a5ea0f55a7142">Flags::libprocess_num_worker_threads</a>,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="stringliteral">"libprocess_num_worker_threads"</span>,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="stringliteral">"Number of Libprocess worker threads.\n"</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="stringliteral">"Defaults to 8. Must be at least 1."</span>,</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  8u,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  [](<span class="keyword">const</span> <span class="keywordtype">size_t</span>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="lin
e"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (value < 1u) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="stringliteral">"Expected --libprocess_num_worker_threads of at least 1"</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  });</div><div class="line"><
a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a4a5d15a242a55783cf676b2fa799e360"> 177</a></span>  std::string <a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a4a5d15a242a55783cf676b2fa799e360">environment_variable_prefix</a>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a68a07a76e5b8842c754852a424d12525"> 179</a></span>  std::string <a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a68a07a76e5b8842c754852a424d12525">launcher_dir</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="struct
mesos_1_1internal_1_1logger_1_1Flags.html#abd0de016d5754244dccafb3d0311bf1c"> 180</a></span>  std::string <a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#abd0de016d5754244dccafb3d0311bf1c">logrotate_path</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a70d12161362a3aa5da5a5ea0f55a7142"> 182</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html#a70d12161362a3aa5da5a5ea0f55a7142">libprocess_num_worker_threads</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> };</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><sp
an class="lineno"> 186</span> <span class="comment">// The `LogrotateContainerLogger` is a container logger that utilizes the</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment">// `logrotate` utility to strictly constrain total size of a container's</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// stdout and stderr log files. All `logrotate` configuration options</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment">// (besides `size`, which this module uses) are supported. See `Flags` above.</span></div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1logger_1_1LogrotateContainerLogger.html"> 190</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1logger_1_1LogrotateContainerLogger.h
tml">LogrotateContainerLogger</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1slave_1_1ContainerLogger.html">mesos::slave::ContainerLogger</a></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a29cdd8cd657c6eceab1bd280cdb1ba0f">LogrotateContainerLogger</a>(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html">Flags</a>& _flags);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">virtual</span> ~<a class="code" href="classmesos_1_1i
nternal_1_1logger_1_1LogrotateContainerLogger.html">LogrotateContainerLogger</a>();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// This is a noop. The logrotate container logger has nothing to initialize.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">virtual</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacesystemd.html#a4e45b8163baf6d307c9884d624472402">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future<mesos::slave::ContainerIO></a> <a class="c
ode" href="namespacecgroups.html#a4bf20862574beb5b0f9af7799489866f">prepare</a>(</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">const</span> ContainerID& containerId,</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">const</span> mesos::slave::ContainerConfig& containerConfig) <span class="keyword">override</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1logger_1_1LogrotateContainerLogger.html#a9efe3b3bece6d7d2c43e8b6234df060d"> 205</a></span>  <a class="code" href="structmesos_1_1internal_1_1logger_1_1Flags.html">Flags</a> <a class="code" href="classmesos_1_1internal_1_
1logger_1_1LogrotateContainerLogger.html#a9efe3b3bece6d7d2c43e8b6234df060d">flags</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1logger_1_1LogrotateContainerLogger.html#abb34cdfbdc44341018b34fcd96db68fd"> 206</a></span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<LogrotateContainerLoggerProcess></a> <a class="code" href="classmesos_1_1internal_1_1logger_1_1LogrotateContainerLogger.html#abb34cdfbdc44341018b34fcd96db68fd">process</a>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> };</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> } <span class="comment">// namespace logger {</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> } <span class="comment">// namespace internal {</span></div><div
class="line"><a name="l00211"></a><span class="lineno"> 211</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#endif // __SLAVE_CONTAINER_LOGGER_LIB_LOGROTATE_HPP__</span></div><div class="ttc" id="namespaceos_html_a69b3969276ffa4cb698b9431ee43bd7c"><div class="ttname"><a href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a></div><div class="ttdeci">bool exists(const std::string &path)</div><div class="ttdef"><b>Definition:</b> exists.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="structmesos_1_1internal_1_1logger_1_1LoggerFlags_html_a6f16e6c1a4ea3d53a938706f9d215fdf"><div class="ttname"><a href="structmesos_1_1internal_1_1logger_1_1LoggerFlags.html#a6f16e6c1a4ea3d53a938706f9d215fdf">mesos::internal::logger::LoggerFlags::validateSize</a></div><div class="ttdeci">static Option< Error > validateSize(const Bytes &value)</div><div class="ttdef"><b>Definition:</b> lib_logrotate.hpp:89</div></div>
<div class="ttc" id="exists_8hpp_html"><div class="ttname"><a href="exists_8hpp.html">exists.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/libprocess_2include_2process_2check_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libprocess_2include_2process_2check_8hpp_source.html b/content/api/latest/c++/libprocess_2include_2process_2check_8hpp_source.html
index 8db9168..e7f1017 100644
--- a/content/api/latest/c++/libprocess_2include_2process_2check_8hpp_source.html
+++ b/content/api/latest/c++/libprocess_2include_2process_2check_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="libprocess_2include_2process_2check_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <s
pan class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span
> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __PROCESS_CHECK_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __PROCESS_CHECK_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/o
ption.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="future_8hpp.html">process/future.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// Provides a CHECK_PENDING macro, akin to CHECK.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// This appends the error if possible to the end of the log message, so there's</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// no need to append the error message explicitly.</span></div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href=
"libprocess_2include_2process_2check_8hpp.html#a3e2ba5c8589f7f5799251a12409e142c"> 26</a></span> <span class="preprocessor">#define CHECK_PENDING(expression) \</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"> CHECK_STATE(CHECK_PENDING, _check_pending, expression)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#a55bf53e1f554470600774a6bf0c09140"> 29</a></span> <span class="preprocessor">#define CHECK_READY(expression) \</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor"> CHECK_STATE(CHECK_READY, _check_ready, expression)</span></div><div class="line"><a name="l00031"></a><span class="li
neno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#a4edf36ad649dd87b5e6c199b99805c3c"> 32</a></span> <span class="preprocessor">#define CHECK_DISCARDED(expression) \</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> CHECK_STATE(CHECK_DISCARDED, _check_discarded, expression)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#a16ba39848d6ce5c97783aef37c5846e0"> 35</a></span> <span class="preprocessor">#define CHECK_FAILED(expression) \</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"> CH
ECK_STATE(CHECK_FAILED, _check_failed, expression)</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#a055321ef5a02c5ca1d39ca7bef7a1232"> 38</a></span> <span class="preprocessor">#define CHECK_ABANDONED(expression) \</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"> CHECK_STATE(CHECK_ABANDONED, _check_abandoned, expression)</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Private structs/functions used for CHECK_*.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span cl
ass="lineno"> 43</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#ac22b41cec5d22e671e56492ef1439c9c"> 44</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="libprocess_2include_2process_2check_8hpp.html#ac22b41cec5d22e671e56492ef1439c9c">_check_pending</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<T></a>& <a class="code" href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">f</a>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#a68f241961e700d0cecf982d9cc0043d7">isRe
ady</a>()) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is READY"</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#abc89036db733a417b7b383b091efaf3c">isDiscarded</a>()) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is DISCARDED"</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f8
1e2ec">isFailed</a>()) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is FAILED: "</span> + f.<a class="code" href="classprocess_1_1Future.html#ae649c56b07f44c05e4b7aa3620133ff9">failure</a>());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  CHECK(f.<a class="code" href="classprocess_1_1Future.html#af23884cf963eb5ec061595eb2e288903">isPending</a>());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></
a><span class="lineno"> 56</span> }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#a621efa2d017ccc6c7eb7c128efc9108d"> 60</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a621efa2d017ccc6c7eb7c128efc9108d">_check_ready</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<T></a>& <a class="code" href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">f</a>)</div><div class="line"><a name="l0006
1"></a><span class="lineno"> 61</span> {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#af23884cf963eb5ec061595eb2e288903">isPending</a>()) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is PENDING"</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#abc89036db733a417b7b383b091efaf3c">isDiscarded</a>()) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is DI
SCARDED"</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f81e2ec">isFailed</a>()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is FAILED: "</span> + f.<a class="code" href="classprocess_1_1Future.html#ae649c56b07f44c05e4b7aa3620133ff9">failure</a>());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  CHECK(f.<a class="code" href="classprocess_1_1Future.html#a68f241961e700d0cecf982d9cc0043d7">isReady</a>());</div><div class="line"><a name="l00070"></a>
<span class="lineno"> 70</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#a43d01cdf02bf28caeaecb656899b9434"> 76</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a43d01cdf02bf28caeaecb656899b943
4">_check_discarded</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<T></a>& <a class="code" href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">f</a>)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#af23884cf963eb5ec061595eb2e288903">isPending</a>()) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is PENDING"</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#a68f
241961e700d0cecf982d9cc0043d7">isReady</a>()) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is READY"</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f81e2ec">isFailed</a>()) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is FAILED: "</span> + f.<a class="code" href="classprocess_1_1Future.html#ae649c56b07f44c05e4b7aa3620133ff9">failure</a>());</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  } <span class="keywordf
low">else</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  CHECK(f.<a class="code" href="classprocess_1_1Future.html#abc89036db733a417b7b383b091efaf3c">isDiscarded</a>());</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="libp
rocess_2include_2process_2check_8hpp.html#a1c78cc5343f9e5270d4b11c208c6f14a"> 92</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a1c78cc5343f9e5270d4b11c208c6f14a">_check_failed</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<T></a>& <a class="code" href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">f</a>)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#af23884cf963eb5ec061595eb2e288903">isPending</a>()) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a
020">Some</a>(<span class="stringliteral">"is PENDING"</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#a68f241961e700d0cecf982d9cc0043d7">isReady</a>()) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<span class="stringliteral">"is READY"</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#abc89036db733a417b7b383b091efaf3c">isDiscarded</a>()) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</
span> <a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<span class="stringliteral">"is DISCARDED"</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  CHECK(f.<a class="code" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f81e2ec">isFailed</a>());</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><
div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="libprocess_2include_2process_2check_8hpp.html#a4cc40ed4d851706f59d5de5c55545517"> 108</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="libprocess_2include_2process_2check_8hpp.html#a4cc40ed4d851706f59d5de5c55545517">_check_abandoned</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<T></a>& <a class="code" href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">f</a>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Fut
ure.html#a68f241961e700d0cecf982d9cc0043d7">isReady</a>()) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<span class="stringliteral">"is READY"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#abc89036db733a417b7b383b091efaf3c">isDiscarded</a>()) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<span class="stringliteral">"is DISCARDED"</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  } <span class="keywordflow">else</span> <span
class="keywordflow">if</span> (f.<a class="code" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f81e2ec">isFailed</a>()) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<span class="stringliteral">"is FAILED: "</span> + f.<a class="code" href="classprocess_1_1Future.html#ae649c56b07f44c05e4b7aa3620133ff9">failure</a>());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!f.<a class="code" href="classprocess_1_1Future.html#aff9a28bc06c115d1e59063c15e526739">isAbandoned</a>()) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="some_8hpp.html#a2048f5c3b4ee79448c012cf6dc82a020">Some</a>(<span cla
ss="stringliteral">"is not abandoned"</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// TODO(dhamon): CHECK_NPENDING, CHECK_NREADY, etc.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#endif // __PROCESS_CHECK_HPP__</span></div><div class="ttc" id="classprocess_1_1Future_html_a68f241961e700d0cecf982d9cc0043d7"><div class="ttname"><a
href="classprocess_1_1Future.html#a68f241961e700d0cecf982d9cc0043d7">process::Future::isReady</a></div><div class="ttdeci">bool isReady() const </div><div class="ttdef"><b>Definition:</b> future.hpp:1220</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="namespaceprocess_html_a62d5333e8ec1817c249cf83e15d568b4"><div class="ttname"><a href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">process::f</a></div><div class="ttdeci">F && f</div><div class="ttdef"><b>Definition:</b> defer.hpp:270</div></div>
<div class="ttc" id="libprocess_2include_2process_2check_8hpp_html_a4cc40ed4d851706f59d5de5c55545517"><div class="ttname"><a href="libprocess_2include_2process_2check_8hpp.html#a4cc40ed4d851706f59d5de5c55545517">_check_abandoned</a></div><div class="ttdeci">Option< Error > _check_abandoned(const process::Future< T > &f)</div><div class="ttdef"><b>Definition:</b> check.hpp:108</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html b/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
index 5477ba5..8b9e32b 100644
--- a/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
+++ b/content/api/latest/c++/libprocess_2include_2process_2socket_8hpp_source.html
@@ -59,7 +59,7 @@
<div class="ttc" id="classprocess_1_1network_1_1internal_1_1SocketImpl_html_aa4754b1975ff51b35734e8f5941ee319"><div class="ttname"><a href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#aa4754b1975ff51b35734e8f5941ee319">process::network::internal::SocketImpl::kind</a></div><div class="ttdeci">virtual Kind kind() const =0</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classprocess_1_1network_1_1internal_1_1SocketImpl_html_a736f79aaed2572670aab9eda08cc4efa"><div class="ttname"><a href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a736f79aaed2572670aab9eda08cc4efa">process::network::internal::SocketImpl::accept</a></div><div class="ttdeci">virtual Future< std::shared_ptr< SocketImpl > > accept()=0</div><div class="ttdoc">Returns an implementation corresponding to the next pending connection for the listening socket...</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classprocess_1_1network_1_1internal_1_1SocketImpl_html_a963ee1a4b21acf7f423b86fd06cdf09a"><div class="ttname"><a href="classprocess_1_1network_1_1internal_1_1SocketImpl.html#a963ee1a4b21acf7f423b86fd06cdf09a">process::network::internal::SocketImpl::release</a></div><div class="ttdeci">int_fd release()</div><div class="ttdoc">Releases ownership of the file descriptor. </div><div class="ttdef"><b>Definition:</b> socket.hpp:211</div></div>
[36/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/index.hhk
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhk b/content/api/latest/c++/index.hhk
index e29d2c3..8921ee2 100644
--- a/content/api/latest/c++/index.hhk
+++ b/content/api/latest/c++/index.hhk
@@ -39,8 +39,8 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#ab9c4a52a88fcc9983438e391643424ca"><param name="Name" value="redirect"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#a49105dc036ad04225c92bd673da5ce39"><param name="Name" value="write"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#ab005316d71b45c5b05de0a6234c6f8fc"><param name="Name" value="WRITE"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2io_8hpp.html#a49105dc036ad04225c92bd673da5ce39"><param name="Name" value="write"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="3rdparty_2libprocess_2include_2process_2metrics_2metrics_8hpp.html"><param name="Name" value="3rdparty/libprocess/include/process/metrics/metrics.hpp"></OBJECT>
<UL>
@@ -1365,9 +1365,12 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1capabilities.html#abf44ee3490d4ec99e8549060bb8c9f58ad2aa48fd98d1fe5bd4e73f4ec98c5b81"><param name="Name" value="BLOCK_SUSPEND"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structproc_1_1ProcessStatus.html#ab2edfe8f433be9047cc8454cc401107b"><param name="Name" value="blocked"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1xfs_1_1BasicBlocks.html#af756bab080806ee8cae4bd6ad122c39f"><param name="Name" value="blocks"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1"><param name="Name" value="body"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a2498f3dfc1ebe743f650e72f147c7887a25d7d2e078ea5bd01283be7cc227e071"><param name="Name" value="BODY"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905"><param name="Name" value="body"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1"><param name="Name" value="body"></OBJECT>
+ <UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Request.html#a78dfcfa785afc80e221d92543ff617f1"><param name="Name" value="process::http::Request"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a5f6d23dd77e1eeb0737dc728e0109905"><param name="Name" value="process::http::Response"></OBJECT>
+ </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Response.html#a6dd5881e0450540a106e37257434eaada7d2a4db1b1426c6caab18fa8b484f4f5"><param name="Name" value="BODY"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1Message.html#aba0d1f741d939864cf287833dd14792e"><param name="Name" value="body"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structflags_1_1Flag.html#a48427029bfe0f14d178fec0e2388fb84"><param name="Name" value="boolean"></OBJECT>
@@ -4658,6 +4661,7 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1cni_1_1PortMapper.html#aa05364e554107c12f4777e179c4f4657"><param name="Name" value="ERROR_PORTMAP_FAILURE"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1cni_1_1PortMapper.html#a8d0d2235ccd8bcc62fce6b4f6213b3aa"><param name="Name" value="ERROR_READ_FAILURE"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1cni_1_1PortMapper.html#ada06e30659b136a690e6921e991f866c"><param name="Name" value="ERROR_UNSUPPORTED_COMMAND"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="errorbase_8hpp.html"><param name="Name" value="errorbase.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#acf454ebfad71bed1e2c2de161f8b4477"><param name="Name" value="errors"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#acf454ebfad71bed1e2c2de161f8b4477"><param name="Name" value="mesos::internal::slave::state::ExecutorState"></OBJECT>
@@ -14324,8 +14328,8 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ResourceConversion.html#adb691cdd12b7af7db52284b0a1737533"><param name="Name" value="apply"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ResourceConversion.html#afa8d5fe5c9c3f6f1588d7df710262080"><param name="Name" value="consumed"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ResourceConversion.html#a5a8038920d7a88ed4c0b5b096f6fce83"><param name="Name" value="converted"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781"><param name="Name" value="postValidation"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ResourceConversion.html#aa9039c86575590f50e1e03cc3f42e9e6"><param name="Name" value="PostValidation"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ResourceConversion.html#a08a56bacb82357b13c8fa3f03e999781"><param name="Name" value="postValidation"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1ResourceConversion.html#aad98a62b2681ff5a4b77f9dc20e9140b"><param name="Name" value="ResourceConversion"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1Resources.html"><param name="Name" value="mesos::Resources"></OBJECT>
@@ -15252,13 +15256,10 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1metrics_1_1Metric.html#a2d32a61ac6c565314ec780a5939e1485"><param name="Name" value="Metric"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1metrics_1_1internal.html#aaa37243f659788386a13de558eba70a7"><param name="Name" value="metrics"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1log_1_1Metrics.html#af826d9a6556a89a5e9436c78fd07b021"><param name="Name" value="Metrics"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1log_1_1Metrics.html#af826d9a6556a89a5e9436c78fd07b021"><param name="Name" value="mesos::internal::log::Metrics"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ae898305822e34bfcebc58c9e6ba2ae43"><param name="Name" value="mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess"></OBJECT>
- </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#abf206bd006adf9cd91dce9acbd35f4a2"><param name="Name" value="metrics"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1Metrics.html#a8bab2e615e686c7e2fb9d197258b06cb"><param name="Name" value="Metrics"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ae898305822e34bfcebc58c9e6ba2ae43"><param name="Name" value="Metrics"></OBJECT>
<UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ae898305822e34bfcebc58c9e6ba2ae43"><param name="Name" value="mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1Metrics.html#a8bab2e615e686c7e2fb9d197258b06cb"><param name="Name" value="mesos::internal::master::allocator::internal::Metrics"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1allocator_1_1Metrics.html#a09013502681221e6a5bae264563cb954"><param name="Name" value="mesos::internal::master::allocator::Metrics"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1Master.html#a33768639ed69e6812b805bd70b29bf35"><param name="Name" value="mesos::internal::master::Master"></OBJECT>
@@ -15724,18 +15725,27 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1KillPolicyTestHelper.html#a10eecc0ec13819b8117167b4a349034d"><param name="Name" value="mesos::internal::tests::KillPolicyTestHelper"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1MemoryTestHelper.html#aa5dad9a209f238aa7d65dde34d8e5c2d"><param name="Name" value="mesos::internal::tests::MemoryTestHelper"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1tests_1_1SetnsTestHelper.html#a10f7ff24e377e39c6c01dab68bfc2ede"><param name="Name" value="mesos::internal::tests::SetnsTestHelper"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ae6ff1cef4e490fa372960bf17f8446a9"><param name="Name" value="mesos::uri::CopyFetcherPlugin"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ab183d70e36bb66b5f55c543637488881"><param name="Name" value="name"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ae6ff1cef4e490fa372960bf17f8446a9"><param name="Name" value="NAME"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a3797f96a62adbc485e54c139cb967d3b"><param name="Name" value="name"></OBJECT>
+ <UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CopyFetcherPlugin.html#ab183d70e36bb66b5f55c543637488881"><param name="Name" value="mesos::uri::CopyFetcherPlugin"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a3797f96a62adbc485e54c139cb967d3b"><param name="Name" value="mesos::uri::CurlFetcherPlugin"></OBJECT>
+ </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a899fab81e86817aad545389c3cc5b535"><param name="Name" value="NAME"></OBJECT>
+ <UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1CurlFetcherPlugin.html#a899fab81e86817aad545389c3cc5b535"><param name="Name" value="mesos::uri::CurlFetcherPlugin"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1DockerFetcherPlugin.html#ad942cc6916621fcfb8f714a76aaf2487"><param name="Name" value="mesos::uri::DockerFetcherPlugin"></OBJECT>
+ </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1DockerFetcherPlugin.html#ab99142c6fad3fff779336e6f7002d700"><param name="Name" value="name"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1DockerFetcherPlugin.html#ad942cc6916621fcfb8f714a76aaf2487"><param name="Name" value="NAME"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1Fetcher_1_1Plugin.html#a202f7d2793b8ea5a31e85d11f9c4a299"><param name="Name" value="name"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a06b4afb2f86856aadf43412a6bf9ab73"><param name="Name" value="NAME"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a4bb32944d46d17d2152813eb5aea91cd"><param name="Name" value="name"></OBJECT>
<UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1DockerFetcherPlugin.html#ab99142c6fad3fff779336e6f7002d700"><param name="Name" value="mesos::uri::DockerFetcherPlugin"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1Fetcher_1_1Plugin.html#a202f7d2793b8ea5a31e85d11f9c4a299"><param name="Name" value="mesos::uri::Fetcher::Plugin"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a4bb32944d46d17d2152813eb5aea91cd"><param name="Name" value="mesos::uri::HadoopFetcherPlugin"></OBJECT>
+ </UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1uri_1_1HadoopFetcherPlugin.html#a06b4afb2f86856aadf43412a6bf9ab73"><param name="Name" value="NAME"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"><param name="Name" value="name"></OBJECT>
+ <UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"><param name="Name" value="os::Shell"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"><param name="Name" value="posix/shell.hpp"></OBJECT>
</UL>
@@ -16082,13 +16092,10 @@
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Object.html#a79dba4ce034071eeef6a807d8d574cea"><param name="Name" value="JSON::Object"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm.html#a0720b5f434e636e22a3ed34f847eec57"><param name="Name" value="Jvm"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#a3c338f2867b29b7868472a714014ca76"><param name="Name" value="object"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#ace2b910d3838c7ad2ed5f67d872d9bd9"><param name="Name" value="Object"></OBJECT>
- <UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#ace2b910d3838c7ad2ed5f67d872d9bd9"><param name="Name" value="Jvm::Object"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1ObjectApprover_1_1Object.html#a03e6baf0690ffd26ad3bc4929b70d967"><param name="Name" value="mesos::ObjectApprover::Object"></OBJECT>
</UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classJvm_1_1Object.html#a3c338f2867b29b7868472a714014ca76"><param name="Name" value="object"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1ObjectApprover_1_1Object.html#a03e6baf0690ffd26ad3bc4929b70d967"><param name="Name" value="Object"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos.html#a32d3c2a48160df803ce466136940440e"><param name="Name" value="ObjectApprovers::approved< authorization::VIEW_ROLE >"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos.html#a32d3c2a48160df803ce466136940440e"><param name="Name" value="mesos"></OBJECT>
@@ -16141,8 +16148,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Future.html#a3ef51b1f7e70860758e47c39ed7660f1"><param name="Name" value="onAbandoned"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Future.html#a71bde220aed3c725cef2040f63adf42a"><param name="Name" value="onAny"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#af60c4d00f5bca3091b20709b038e5ef3"><param name="Name" value="once"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#af3c871858c0d2f141238afd52de2643c"><param name="Name" value="Once"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Once.html#af60c4d00f5bca3091b20709b038e5ef3"><param name="Name" value="once"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Future.html#a1b80bf321358be44880d9c6bae5d9a2d"><param name="Name" value="onDiscard"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Future.html#a066172ff3324966119049bb9feac95ac"><param name="Name" value="onDiscarded"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structos_1_1Load.html#ac65d8819bbf8201cfa6975d853061e93"><param name="Name" value="one"></OBJECT>
@@ -16521,6 +16528,7 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacedocker_1_1spec.html#ad8e529f836f39b93d35ae8e8906d22f5"><param name="Name" value="docker::spec"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classDuration.html#a3e6309cc2ddc8f96a0bd587d7c9e6f94"><param name="Name" value="Duration"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="duration_8hpp.html#aae42b4c6bc1b2a3b493f1c306afe7522"><param name="Name" value="duration.hpp"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0"><param name="Name" value="errorbase.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#abc0226f448b014a39a8113f06482d6c9"><param name="Name" value="fd.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254"><param name="Name" value="flag.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceflags.html#a9a4e5bb9a94a3527f736168c50051254"><param name="Name" value="flags"></OBJECT>
@@ -18322,8 +18330,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html"><param name="Name" value="process::EventQueue"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#a73f44b10f6d09ead6bdf3ab11cba4d06"><param name="Name" value="consumer"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#a11390aaa07bced511a5b7fe4c94e97fd"><param name="Name" value="Consumer"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#a73f44b10f6d09ead6bdf3ab11cba4d06"><param name="Name" value="consumer"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#ad2d51d8a2a80f473de0bcf2e08e48d90"><param name="Name" value="EventQueue"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#aa95046266e731af49ccfb9d689cb1eca"><param name="Name" value="producer"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1EventQueue.html#aaf00b363e56ec3a72a6f775a3814d6a0"><param name="Name" value="Producer"></OBJECT>
@@ -18928,8 +18936,8 @@
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a34d62916736c1dfebd1585cf51f19d0c"><param name="Name" value="BUFFERED_READ_SIZE"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf"><param name="Name" value="poll"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab9c4a52a88fcc9983438e391643424ca"><param name="Name" value="redirect"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc"><param name="Name" value="WRITE"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39"><param name="Name" value="write"></OBJECT>
@@ -19591,15 +19599,15 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< AwaitProcess< T > >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< CheckerProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19633,22 +19641,22 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< GarbageCollectorProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< GroupProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< Heartbeater< Message, Event > >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19661,22 +19669,22 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< HttpConnectionProcess< Call, Event > >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< HttpProxy >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< JobObjectManager >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19689,8 +19697,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< LogProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19703,8 +19711,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< LogWriterProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19717,8 +19725,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< MemoryProfiler >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19731,8 +19739,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< MesosContainerizerProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19752,8 +19760,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< NetworkProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19815,8 +19823,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< StatusUpdateManagerProcess< IDType, CheckpointType, UpdateType > >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19836,8 +19844,8 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< ThunkProcess< R > >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -19850,15 +19858,15 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< VersionProcess >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html"><param name="Name" value="Process< WhitelistWatcher >"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a1e9980d5d873c695d4a1749971e18cd9"><param name="Name" value="This"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a919f2834843f8620784c58aee7db2371"><param name="Name" value="~Process"></OBJECT>
</UL>
@@ -20381,10 +20389,10 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1state.html#a19c92fe2f0998dbbc281938ca636b3ca"><param name="Name" value="mesos::internal::slave::state"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1slave_1_1state.html#a19c92fe2f0998dbbc281938ca636b3ca"><param name="Name" value="src/slave/state.hpp"></OBJECT>
</UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="read"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#aca1f059ca9f0d7360631c621debeb879"><param name="Name" value="READ"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"><param name="Name" value="read"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a4c34d22e475e29f12ac739921dcc580f"><param name="Name" value="3rdparty/libprocess/include/process/io.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"><param name="Name" value="3rdparty/stout/include/stout/os/read.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a7e99bac0fb06315c051358c7916fe692"><param name="Name" value="3rdparty/stout/include/stout/os/windows/read.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprotobuf.html#a2120146c620b72d4e1e3ae47bdacb1b3"><param name="Name" value="3rdparty/stout/include/stout/protobuf.hpp"></OBJECT>
@@ -21829,11 +21837,9 @@
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1ProcessBase.html#a7ff87364baa79991901b8d73dc5c5fca"><param name="Name" value="self"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1ProcessBase.html#a7ff87364baa79991901b8d73dc5c5fca"><param name="Name" value="process::ProcessBase"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< AwaitProcess< T > >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< CheckerProcess >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
@@ -21842,6 +21848,8 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< DockerContainerizerProcess >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< FetcherProcess >"></OBJECT>
@@ -21856,13 +21864,13 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Heartbeater< Message, Event > >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Help >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< HttpConnectionProcess< Call, Event > >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< HttpConnectionProcess< Call, Event > >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< HttpProxy >"></OBJECT>
@@ -21870,32 +21878,40 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< JobObjectManager >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Logging >"></OBJECT>
- </UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< LogProcess >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< LogReaderProcess >"></OBJECT>
+ </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< LogReaderProcess >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< LogWriterProcess >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Master >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< LogWriterProcess >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Master >"></OBJECT>
+ </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Master >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< MemoryProfiler >"></OBJECT>
+ </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< MemoryProfiler >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< MesosAllocatorProcess >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< MesosAllocatorProcess >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< MesosContainerizerProcess >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< MesosIsolatorProcess >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
@@ -21903,67 +21919,47 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< MetricsProcess >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< NetworkProcess >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Profiler >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Profiler >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< ProvisionerProcess >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< ProvisionerProcess >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< RateLimiterProcess >"></OBJECT>
- </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< RateLimiterProcess >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< ReaderProcess< T > >"></OBJECT>
- </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< ReaperProcess >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< ReqResProcess< Req, Res > >"></OBJECT>
- </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< ReqResProcess< Req, Res > >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< SequenceProcess >"></OBJECT>
- </UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<UL>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< ReqResProcess< Req, Res > >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< SequenceProcess >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< Slave >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< Slave >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< StatusUpdateManagerProcess< IDType, CheckpointType, UpdateType > >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< SubsystemProcess >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< SubsystemProcess >"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< System >"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< ThunkProcess< R > >"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< ThunkProcess< R > >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="Process< UriDiskProfileAdaptorProcess >"></OBJECT>
- </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
- <UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< UriDiskProfileAdaptorProcess >"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Process< VersionProcess >"></OBJECT>
- </UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#a0ff94db0ab3ccea7ba6fd8cba68b6b9e"><param name="Name" value="Self"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Process.html#abef2d54388c5262af19b057b1a6eee8e"><param name="Name" value="self"></OBJECT>
@@ -24777,9 +24773,9 @@
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structos_1_1Exec.html#aa44880630d71534bbcb9f8f5acb2c286"><param name="Name" value="os::Exec"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structos_1_1Fork.html#ae3afda5dfbf9c15949f69161d2d5b33c"><param name="Name" value="os::Fork"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="unimplemented_8hpp.html#a8608fe736d309b01e7bf6c4d414e3bf4"><param name="Name" value="unimplemented.hpp"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="unimplemented_8hpp.html#a788f2d5d116d024fbfd9b0fd36fa334f"><param name="Name" value="Unimplemented"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="unimplemented_8hpp.html#a8608fe736d309b01e7bf6c4d414e3bf4"><param name="Name" value="UNIMPLEMENTED"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1Shared.html#a5a4fd275e890e3c5e81dd7aed1d804b0"><param name="Name" value="unique"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classDays.html#a589226d06fa74863c8f7a3c7b5c17a4c"><param name="Name" value="units"></OBJECT>
<UL>
@@ -24844,8 +24840,8 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132"><param name="Name" value="UNREACHABLE"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3"><param name="Name" value="Unreachable"></OBJECT>
</UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3"><param name="Name" value="Unreachable"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132"><param name="Name" value="UNREACHABLE"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="unreachable_8hpp.html#a247a4dee16fdea6cdd332f35a572e7d3"><param name="Name" value="Unreachable"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Framework.html#a9db50e71935c3f9ac83ba47e18c700f8"><param name="Name" value="unreachableTasks"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1slave_1_1FetcherProcess_1_1Cache_1_1Entry.html#a3df365057bac1a641a348583b2fa7480"><param name="Name" value="unreference"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structmesos_1_1internal_1_1master_1_1Framework.html#ac1cc9915f69092137574206fe15e571c"><param name="Name" value="unregisteredTime"></OBJECT>
@@ -24892,8 +24888,8 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5"><param name="Name" value="posix/os.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5"><param name="Name" value="windows/os.hpp"></OBJECT>
</UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a9c6b075f53b5419af9cee264482272eb"><param name="Name" value="unsigned_integer"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a156598d70937964dd8de2628351061aaa0ce531160156e5c4aecfabc42df3b68a"><param name="Name" value="UNSIGNED_INTEGER"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="structJSON_1_1Number.html#a9c6b075f53b5419af9cee264482272eb"><param name="Name" value="unsigned_integer"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1Status.html#addffbea97c092bf92955b7f513208ceb"><param name="Name" value="UNSUPPORTED_MEDIA_TYPE"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structprocess_1_1http_1_1UnsupportedMediaType.html#a9a383ddcf2f2fb6ce2581bc629a4e6c9"><param name="Name" value="UnsupportedMediaType"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacemesos_1_1internal_1_1command.html#a298fb91e3560074658b123b93ec8d26c"><param name="Name" value="untar"></OBJECT>
@@ -25612,8 +25608,8 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classprocess_1_1WeakFuture.html#abc498bf35827627ae815540181e073a9"><param name="Name" value="WeakFuture"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1master_1_1Flags.html#a94a63a333e884c51856ce197f29f8e89"><param name="Name" value="webui_dir"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classWeeks.html"><param name="Name" value="Weeks"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="classDuration.html#aadcf23b757330ae23ee70117aec0656e"><param name="Name" value="WEEKS"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classDuration.html#ae98a411bf78d0ab537c021bf3dbd01b0"><param name="Name" value="weeks"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="classDuration.html#aadcf23b757330ae23ee70117aec0656e"><param name="Name" value="WEEKS"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classWeeks.html"><param name="Name" value="Weeks"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classWeeks.html#a7d1f2cc4ff0b617564e447dfbbcf0373"><param name="Name" value="units"></OBJECT>
@@ -25824,10 +25820,10 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="write_8hpp.html#a35b77e10ddf35fa4569cb1a7d1e3532b"><param name="Name" value="write"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="write_8hpp.html#ad42f0ba6d36e7d9611f80820add8424a"><param name="Name" value="write_impl"></OBJECT>
</UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc"><param name="Name" value="WRITE"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39"><param name="Name" value="write"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#ab005316d71b45c5b05de0a6234c6f8fc"><param name="Name" value="WRITE"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprotobuf.html#aaedc9cc58ee2711a7b5e8831ba02a899"><param name="Name" value="write"></OBJECT>
<UL>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprocess_1_1io.html#a49105dc036ad04225c92bd673da5ce39"><param name="Name" value="3rdparty/libprocess/include/process/io.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespaceprotobuf.html#aaedc9cc58ee2711a7b5e8831ba02a899"><param name="Name" value="3rdparty/stout/include/stout/protobuf.hpp"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="namespacecgroups.html#ad199dcd922eab26b23b7011c7e0ca34a"><param name="Name" value="cgroups"></OBJECT>
</UL>
@@ -25918,8 +25914,8 @@
<LI><OBJECT type="text/sitemap"><param name="Local" value="classmesos_1_1internal_1_1log_1_1tool_1_1Replica_1_1Flags.html#a84668ca2749a1e1f6fcff9707f7f987b"><param name="Name" value="mesos::internal::log::tool::Replica::Flags"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="structos_1_1Process.html#a4f273436ac1bdd45926d3f3c76733f39"><param name="Name" value="zombie"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacezookeeper.html"><param name="Name" value="zookeeper"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="classZooKeeper.html"><param name="Name" value="ZooKeeper"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Local" value="namespacezookeeper.html"><param name="Name" value="zookeeper"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Local" value="zookeeper_2authentication_8hpp.html"><param name="Name" value="zookeeper/authentication.hpp"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Local" value="zookeeper_2authentication_8hpp.html#a520e93e970fb994ef0446f92046d3784"><param name="Name" value="EVERYONE_CREATE_AND_READ_CREATOR_ALL"></OBJECT>
[26/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2ftruncate_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2ftruncate_8hpp_source.html b/content/api/latest/c++/posix_2ftruncate_8hpp_source.html
index 6d39bf6..bbaf5b8 100644
--- a/content/api/latest/c++/posix_2ftruncate_8hpp_source.html
+++ b/content/api/latest/c++/posix_2ftruncate_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2ftruncate_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"
>//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div c
lass="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_FTRUNCATE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_FTRUNCATE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>
></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceos.html#af41b169df092f5afbd41de13c450e959"> 26</a></span> <span class
="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#af41b169df092f5afbd41de13c450e959">ftruncate</a>(<span class="keywordtype">int</span> fd, off_t length)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#af41b169df092f5afbd41de13c450e959">ftruncate</a>(fd, length) != 0) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="stringliteral">"Failed to truncate file at file descriptor '"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stri
ngify</a>(fd) + <span class="stringliteral">"' to "</span> +</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(length) + <span class="stringliteral">" bytes."</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> } <span class="comment">// namespace os {</span></div><div class="line"><
a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_FTRUNCATE_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2killtree_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2killtree_8hpp_source.html b/content/api/latest/c++/posix_2killtree_8hpp_source.html
index b9cdfad..e4653cc 100644
--- a/content/api/latest/c++/posix_2killtree_8hpp_source.html
+++ b/content/api/latest/c++/posix_2killtree_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">killtree.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="posix_2killtree_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">
//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cl
ass="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_KILLTREE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_KILLTREE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="prepro
cessor">#include <queue></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="os_8hpp.html">stout/os.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="pstree_8hpp.html">stout/os/pstree.hpp</a>></span></div><div class="line"><a name="l00027"></a><span cl
ass="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Forward declarations from os.hpp.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">inline</span> std::set<pid_t> <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">children</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>, <span class="keyword">const</span> std::list<Process>&, <span class="keywordtype">bool</span>);</div><div class="line"><
a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>, <span class="keyword">const</span> std::list<Process>&);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list&
lt;Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<ProcessTree></a>> <a class="code" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f">pstrees</a>(</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">const</span> std::set<pid_t>&,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> std::list<Process>&);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Sends a signal t
o a process tree rooted at the specified pid.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// If groups is true, this also sends the signal to all encountered</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// process groups.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// If sessions is true, this also sends the signal to all encountered</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// process sessions.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Note that processes of the group and session of the parent of the</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// root process is not included
unless they are part of the root</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// process tree.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// Note that if the process 'pid' has exited we'll signal the process</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// tree(s) rooted at pids in the group or session led by the process</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// if groups = true or sessions = true, respectively.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Returns the process trees that were successfully or unsuccessfully</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">
// signaled. Note that the process trees can be stringified.</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// TODO(benh): Allow excluding the root pid from stopping, killing,</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// and continuing so as to provide a means for expressing "kill all of</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// my children". This is non-trivial because of the current</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// implementation.</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceos.html#ae7bf571af786eae39cb025d516566168"> 58</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<
;ProcessTree></a>> <a class="code" href="namespaceos.html#ae7bf571af786eae39cb025d516566168">killtree</a>(</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">int</span> signal,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> groups = <span class="keyword">false</span>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> sessions = <span class="keyword">false</span>)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classTry
.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a> = <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="li
ne"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceprocess.html">process</a> = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(pid, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  std::queue<pid_t> queue;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// If the root process has already terminated we'll add in any pids</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// that are in the process group original
ly led by pid or in the</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// session originally led by pid, if instructed.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (process.isNone()) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& _process, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (groups && _process.<a class="code" href="structos_1_1Process.html#a41f9befab165fd224ba2d829e7c35ba6">group</a> == pid) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</s
pan>  queue.push(_process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sessions &&</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  _process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() &&</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  _process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() == pid) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
queue.push(_process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Root process is not running and no processes found in the</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// process group or session so nothing we can do.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (queue.empty()) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span>
std::list<ProcessTree>();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Start the traversal from pid as the root.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  queue.push(pid);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">struct </span>{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::set<pid_t> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a
>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::set<pid_t> groups;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::set<pid_t> sessions;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  std::list<Process> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } visited;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// If we are following groups and/or sessions then we try and make</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// the group and session of the parent process "already visited" so</span></div
><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// that we don't kill "up the tree". This can only be done if the</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// process is present.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (process.isSome() && (groups || sessions)) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classOption.html">Option<Process></a> parent = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(process->parent, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><sp
an class="lineno"> 112</span>  <span class="keywordflow">if</span> (parent.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (groups) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  visited.groups.insert(parent-><a class="code" href="structos_1_1Process.html#a41f9befab165fd224ba2d829e7c35ba6">group</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (sessions && parent-><a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l0011
7"></a><span class="lineno"> 117</span>  visited.sessions.insert(parent-><a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">while</span> (!queue.empty()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = queue.front();</div><di
v class="line"><a name="l00124"></a><span class="lineno"> 124</span>  queue.pop();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (visited.pids.count(pid) != 0) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Make sure this process still exists.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  process = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(pid);</div><div c
lass="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (process.isError()) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(process.error());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (process.isNone()) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span c
lass="comment">// Stop the process to keep it from forking while we are killing</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// it since a forked child might get re-parented by init and</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// become impossible to find.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceos.html#a45423d28aabced8c82165ee906930732">kill</a>(pid, SIGSTOP);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  visited.pids.insert(pid);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  visited.processes.push_back(process.get());</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</sp
an> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// Now refresh the process list knowing that the current process</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// can't fork any more children (since it's stopped).</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  processes = <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span>
<a class="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// Enqueue the children for visiting.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> child, <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">os::children</a>(pid, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), <span class="keyword">false</span>)) {</div><div class="line"><a name="l00157"></a>
<span class="lineno"> 157</span>  queue.push(child);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// Now "visit" the group and/or session of the current process.</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (groups) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="structgroup.html">group</a> = process->group;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (visited.groups.count(group) == 0
) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& process, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (process.<a class="code" href="structos_1_1Process.html#a41f9befab165fd224ba2d829e7c35ba6">group</a> == group) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  queue.push(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line
"><a name="l00169"></a><span class="lineno"> 169</span>  visited.groups.insert(group);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// If we do not have a session for the process, it's likely</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// because the process is a zombie on OS X. This implies it has</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// not been reaped and thus is located somewhere in the tree we</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span
class="comment">// are trying to kill. Therefore, we should discover it from our</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// tree traversal, or through its group (which is always present).</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span> (sessions && process->session.isSome()) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> session = process->session.get();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span> (visited.sessions.count(session) == 0) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">foreach</span> (<span c
lass="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& process, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() && process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() == session) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  queue.push(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00184"></a><span class="lineno">
184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  visited.sessions.insert(session);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Now that all processes are stopped, we send the signal.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669
493997f9">pid_t</a> pid, visited.pids) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespaceos.html#a45423d28aabced8c82165ee906930732">kill</a>(pid, signal);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// There is a concern that even though some process is stopped,</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// sending a signal to any of its children may cause a SIGCLD to</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// be delivered to it which wakes it up (or any other signal maybe</span></div><div class="line"><a name="l00199"></a><span class="lineno
"> 199</span>  <span class="comment">// delivered). However, from the Open Group standards on "Signal</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// Concepts":</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">//</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// "While a process is stopped, any additional signals that are</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// sent to the process shall not be delivered until the process</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// is continued, except SIGKILL which always terminates the</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> 
<span class="comment">// receiving process."</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">//</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// In practice, this is not what has been witnessed. Rather, a</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// process that has been stopped will respond to SIGTERM, SIGINT,</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// etc. That being said, we still continue the process below in the</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// event that it doesn't terminate from the sending signal but it</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span clas
s="comment">// also doesn't get continued (as per the specifications above).</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Try and continue the processes in case the signal is</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// non-terminating but doesn't continue the process.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, visited.pids) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="namespaceos.html#a45423d28aabced8c82165ee906930732">kill</a>(pid, SIGCONT);</div><div class="line"><a name="l
00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Return the process trees representing the visited pids.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f">pstrees</a>(visited.pids, visited.processes);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class=
"lineno"> 225</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_KILLTREE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="posix_2killtree_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">
//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cl
ass="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_KILLTREE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_KILLTREE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="prepro
cessor">#include <queue></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="os_8hpp.html">stout/os.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="pstree_8hpp.html">stout/os/pstree.hpp</a>></span></div><div class="line"><a name="l00027"></a><span cl
ass="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Forward declarations from os.hpp.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">inline</span> std::set<pid_t> <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">children</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>, <span class="keyword">const</span> std::list<Process>&, <span class="keywordtype">bool</span>);</div><div class="line"><
a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a>, <span class="keyword">const</span> std::list<Process>&);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list&
lt;Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<ProcessTree></a>> <a class="code" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f">pstrees</a>(</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">const</span> std::set<pid_t>&,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">const</span> std::list<Process>&);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Sends a signal t
o a process tree rooted at the specified pid.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// If groups is true, this also sends the signal to all encountered</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// process groups.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// If sessions is true, this also sends the signal to all encountered</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// process sessions.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Note that processes of the group and session of the parent of the</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// root process is not included
unless they are part of the root</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// process tree.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// Note that if the process 'pid' has exited we'll signal the process</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// tree(s) rooted at pids in the group or session led by the process</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// if groups = true or sessions = true, respectively.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Returns the process trees that were successfully or unsuccessfully</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">
// signaled. Note that the process trees can be stringified.</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// TODO(benh): Allow excluding the root pid from stopping, killing,</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// and continuing so as to provide a means for expressing "kill all of</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// my children". This is non-trivial because of the current</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// implementation.</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespaceos.html#ae7bf571af786eae39cb025d516566168"> 58</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<
;ProcessTree></a>> <a class="code" href="namespaceos.html#ae7bf571af786eae39cb025d516566168">killtree</a>(</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">int</span> signal,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> groups = <span class="keyword">false</span>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> sessions = <span class="keyword">false</span>)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classTry
.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a> = <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="li
ne"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceprocess.html">process</a> = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(pid, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  std::queue<pid_t> queue;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// If the root process has already terminated we'll add in any pids</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// that are in the process group original
ly led by pid or in the</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// session originally led by pid, if instructed.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (process.isNone()) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& _process, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (groups && _process.<a class="code" href="structos_1_1Process.html#a41f9befab165fd224ba2d829e7c35ba6">group</a> == pid) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</s
pan>  queue.push(_process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (sessions &&</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  _process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() &&</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  _process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() == pid) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
queue.push(_process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Root process is not running and no processes found in the</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// process group or session so nothing we can do.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (queue.empty()) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span>
std::list<ProcessTree>();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Start the traversal from pid as the root.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  queue.push(pid);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">struct </span>{</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::set<pid_t> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a
>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  std::set<pid_t> groups;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::set<pid_t> sessions;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  std::list<Process> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } visited;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// If we are following groups and/or sessions then we try and make</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// the group and session of the parent process "already visited" so</span></div
><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// that we don't kill "up the tree". This can only be done if the</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// process is present.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (process.isSome() && (groups || sessions)) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classOption.html">Option<Process></a> parent = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(process->parent, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><sp
an class="lineno"> 112</span>  <span class="keywordflow">if</span> (parent.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (groups) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  visited.groups.insert(parent-><a class="code" href="structos_1_1Process.html#a41f9befab165fd224ba2d829e7c35ba6">group</a>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span> (sessions && parent-><a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l0011
7"></a><span class="lineno"> 117</span>  visited.sessions.insert(parent-><a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>());</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">while</span> (!queue.empty()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = queue.front();</div><di
v class="line"><a name="l00124"></a><span class="lineno"> 124</span>  queue.pop();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (visited.pids.count(pid) != 0) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Make sure this process still exists.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  process = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(pid);</div><div c
lass="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (process.isError()) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(process.error());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (process.isNone()) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span c
lass="comment">// Stop the process to keep it from forking while we are killing</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// it since a forked child might get re-parented by init and</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// become impossible to find.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="namespaceos.html#a45423d28aabced8c82165ee906930732">kill</a>(pid, SIGSTOP);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  visited.pids.insert(pid);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  visited.processes.push_back(process.get());</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</sp
an> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// Now refresh the process list knowing that the current process</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// can't fork any more children (since it's stopped).</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  processes = <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span>
<a class="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// Enqueue the children for visiting.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> child, <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">os::children</a>(pid, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), <span class="keyword">false</span>)) {</div><div class="line"><a name="l00157"></a>
<span class="lineno"> 157</span>  queue.push(child);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// Now "visit" the group and/or session of the current process.</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (groups) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="structgroup.html">group</a> = process->group;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (visited.groups.count(group) == 0
) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& process, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (process.<a class="code" href="structos_1_1Process.html#a41f9befab165fd224ba2d829e7c35ba6">group</a> == group) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  queue.push(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line
"><a name="l00169"></a><span class="lineno"> 169</span>  visited.groups.insert(group);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// If we do not have a session for the process, it's likely</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// because the process is a zombie on OS X. This implies it has</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// not been reaped and thus is located somewhere in the tree we</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span
class="comment">// are trying to kill. Therefore, we should discover it from our</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// tree traversal, or through its group (which is always present).</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span> (sessions && process->session.isSome()) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> session = process->session.get();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span> (visited.sessions.count(session) == 0) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">foreach</span> (<span c
lass="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& process, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() && process.<a class="code" href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">session</a>.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() == session) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  queue.push(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00184"></a><span class="lineno">
184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  visited.sessions.insert(session);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Now that all processes are stopped, we send the signal.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669
493997f9">pid_t</a> pid, visited.pids) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="namespaceos.html#a45423d28aabced8c82165ee906930732">kill</a>(pid, signal);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// There is a concern that even though some process is stopped,</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// sending a signal to any of its children may cause a SIGCLD to</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// be delivered to it which wakes it up (or any other signal maybe</span></div><div class="line"><a name="l00199"></a><span class="lineno
"> 199</span>  <span class="comment">// delivered). However, from the Open Group standards on "Signal</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// Concepts":</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">//</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// "While a process is stopped, any additional signals that are</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// sent to the process shall not be delivered until the process</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// is continued, except SIGKILL which always terminates the</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> 
<span class="comment">// receiving process."</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">//</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// In practice, this is not what has been witnessed. Rather, a</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// process that has been stopped will respond to SIGTERM, SIGINT,</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// etc. That being said, we still continue the process below in the</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// event that it doesn't terminate from the sending signal but it</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span clas
s="comment">// also doesn't get continued (as per the specifications above).</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Try and continue the processes in case the signal is</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// non-terminating but doesn't continue the process.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, visited.pids) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="namespaceos.html#a45423d28aabced8c82165ee906930732">kill</a>(pid, SIGCONT);</div><div class="line"><a name="l
00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Return the process trees representing the visited pids.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f">pstrees</a>(visited.pids, visited.processes);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class=
"lineno"> 225</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_KILLTREE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
[37/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/gzip_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/gzip_8hpp_source.html b/content/api/latest/c++/gzip_8hpp_source.html
index c0f6ee1..7516a20 100644
--- a/content/api/latest/c++/gzip_8hpp_source.html
+++ b/content/api/latest/c++/gzip_8hpp_source.html
@@ -54,11 +54,11 @@
<div class="contents">
<a href="gzip_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></
div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line">
<a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_GZIP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_GZIP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <zlib.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="strerror_8hpp.html">stout/os/strerror.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span
class="lineno"> 27</span> <span class="comment">// Compression utilities.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// TODO(bmahler): Provide streaming compression as well.</span></div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespacegzip.html"> 29</a></span> <span class="keyword">namespace </span><a class="code" href="namespacegzip.html">gzip</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="namespacegzip_1_1internal.html"> 31</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// W
e use a 16KB buffer with zlib compression / decompression.</span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59"> 34</a></span> <span class="preprocessor">#define GZIP_BUFFER_SIZE 16384</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classgzip_1_1internal_1_1GzipError.html"> 37</a></span> <span class="keyword">class </span><a class="code" href="classgzip_1_1internal_1_1GzipError.html">GzipError</a> : <span class="keyword">public</span> <a class="code" href="classError.html">Error</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">
public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classgzip_1_1internal_1_1GzipError.html#ae37852986117d5d162983538ad51dd33"> 40</a></span>  <a class="code" href="classgzip_1_1internal_1_1GzipError.html#ae37852986117d5d162983538ad51dd33">GzipError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>, <span class="keyword">const</span> z_stream_s& stream, <span class="keywordtype">int</span> _code)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  : <a class="code" href="classError.html">Error</a>(message + <span class="stringliteral">": "</span> + <a class="code" href="classgzip_1_1internal_1_1GzipError.html">GzipError</a>::strerror(stream, _code)), <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">code</a>(_code) {}</div><div class="line"><
a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classgzip_1_1internal_1_1GzipError.html#a329eac2b003b8e0d17ebe4379107d943"> 43</a></span>  <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a329eac2b003b8e0d17ebe4379107d943">GzipError</a>(<span class="keyword">const</span> std::string& <a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>, <span class="keywordtype">int</span> _code)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  : <a class="code" href="classError.html">Error</a>(message + <span class="stringliteral">": "</span> + <a class="code" href="classgzip_1_1internal_1_1GzipError.html">GzipError</a>::strerror(_code)), <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">code</a>(_code) {}</div><div class="line"><a name="l00045"></a><s
pan class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classgzip_1_1internal_1_1GzipError.html#ad02a2ea02aafea3b6bb9e294511f5cc4"> 46</a></span>  <a class="code" href="classgzip_1_1internal_1_1GzipError.html#ad02a2ea02aafea3b6bb9e294511f5cc4">GzipError</a>(<span class="keyword">const</span> z_stream_s& stream, <span class="keywordtype">int</span> _code)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  : <a class="code" href="classError.html">Error</a>(<a class="code" href="classgzip_1_1internal_1_1GzipError.html">GzipError</a>::strerror(stream, _code)), <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">code</a>(_code) {}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classgzip_1_1internal_1_1GzipE
rror.html#a1ccd6de1092e6b9410c059e075e7bcd4"> 49</a></span>  <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a1ccd6de1092e6b9410c059e075e7bcd4">GzipError</a>(<span class="keywordtype">int</span> _code)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  : <a class="code" href="classError.html">Error</a>(<a class="code" href="classgzip_1_1internal_1_1GzipError.html">GzipError</a>::strerror(_code)), <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">code</a>(_code) {}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb"> 52</a></span>  <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a
708640c06172cb">code</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">static</span> std::string strerror(<span class="keywordtype">int</span> code)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// We do not attempt to interpret the error codes since</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// their meaning depends on which zlib call was made.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">switch</span> (code) {</div><div class=
"line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> Z_OK: <span class="keywordflow">return</span> <span class="stringliteral">"Z_OK"</span>; <span class="comment">// Not an error.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> Z_STREAM_END: <span class="keywordflow">return</span> <span class="stringliteral">"Z_STREAM_END"</span>; <span class="comment">// Not an error.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> Z_NEED_DICT: <span class="keywordflow">return</span> <span class="stringliteral">"Z_NEED_DICT"</span>; <span class="comment">// Not an error.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> Z_ER
RNO: <span class="keywordflow">return</span> <span class="stringliteral">"Z_ERRNO: "</span> + <a class="code" href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">os::strerror</a>(errno);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> Z_STREAM_ERROR: <span class="keywordflow">return</span> <span class="stringliteral">"Z_STREAM_ERROR"</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">case</span> Z_DATA_ERROR: <span class="keywordflow">return</span> <span class="stringliteral">"Z_DATA_ERROR"</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> Z_MEM_ERROR: <span class="keywordflow">return</span> <span class="stringliteral">"Z_MEM_ERROR"</span>;</div><div class="line"><a name="l00067"></a><s
pan class="lineno"> 67</span>  <span class="keywordflow">case</span> Z_BUF_ERROR: <span class="keywordflow">return</span> <span class="stringliteral">"Z_BUF_ERROR"</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">case</span> Z_VERSION_ERROR: <span class="keywordflow">return</span> <span class="stringliteral">"Z_VERSION_ERROR"</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">"Unknown error "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(code);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a nam
e="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">static</span> std::string strerror(<span class="keyword">const</span> z_stream_s& stream, <span class="keywordtype">int</span> code)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (stream.msg == Z_NULL) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> GzipError::strerror(code);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> GzipError::strerror(code) + <span class="stringli
teral">": "</span> + stream.msg;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> };</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Provides the ability to incrementally decompress</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// a stream of compressed input d
ata.</span></div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classgzip_1_1Decompressor.html"> 88</a></span> <span class="keyword">class </span><a class="code" href="classgzip_1_1Decompressor.html">Decompressor</a></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classgzip_1_1Decompressor.html#a7a7d893074b0b0b5eeb9ec3f5f7ffef3"> 91</a></span>  <a class="code" href="classgzip_1_1Decompressor.html#a7a7d893074b0b0b5eeb9ec3f5f7ffef3">Decompressor</a>()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  : _finished(false)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class=
"lineno"> 94</span>  stream.zalloc = Z_NULL;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  stream.zfree = Z_NULL;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  stream.opaque = Z_NULL;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  stream.next_in = Z_NULL;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  stream.avail_in = 0;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">int</span> <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">code</a> = inflateInit2(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  &stream,</div><div class="line"><a name="l00102"></a><span class="lineno">
102</span>  MAX_WBITS + 16); <span class="comment">// Zlib magic for gzip compression / decompression.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (code != Z_OK) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classgzip_1_1internal_1_1GzipError.html">internal::GzipError</a>(<span class="stringliteral">"Failed to inflateInit2"</span>, stream, code);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(error.<a class="code" href="classError.html
#a2d13609e80acd2a2a473a26f273b1c4f">message</a>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classgzip_1_1Decompressor.html">Decompressor</a>(<span class="keyword">const</span> <a class="code" href="classgzip_1_1Decompressor.html">Decompressor</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classgzip_1_1Decompressor.html">Decompressor</a>& operator=(<span class="keyword">const</span> <a class="code" href="classgzip_1_1Decompressor.html">Decompressor</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00112"></a><span class="l
ineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classgzip_1_1Decompressor.html#a50830001abf74dd578318ef0fc55cfe9"> 113</a></span>  <a class="code" href="classgzip_1_1Decompressor.html#a50830001abf74dd578318ef0fc55cfe9">~Decompressor</a>()</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (inflateEnd(&stream) != Z_OK) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Failed to inflateEnd"</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"
><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Returns the next decompressed chunk of data,</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// or an Error if decompression fails.</span></div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classgzip_1_1Decompressor.html#a2da1313d2c1eb3e9c7609c1a7d1aad31"> 122</a></span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="classgzip_1_1Decompressor.html#a2da1313d2c1eb3e9c7609c1a7d1aad31">decompress</a>(<span class="keyword">const</span> std::string& compressed)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  stream.next_in =</div><div class="line
"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">const_cast<</span>Bytef*<span class="keyword">></span>(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>Bytef*<span class="keyword">></span>(compressed.data()));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  stream.avail_in = <span class="keyword">static_cast<</span>uInt<span class="keyword">></span>(compressed.length());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// Build up the decompressed result.</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Bytef buffer[<a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a>];</div><div class="line"><a name="l00130"></a><span class="lin
eno"> 130</span>  std::string result;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">while</span> (stream.avail_in > 0) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  stream.next_out = buffer;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  stream.avail_out = <a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">int</span> <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">code</a> = inflate(&stream, Z_SYNC_FLUSH);</div><div class="line"><a name="l00137"></
a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  _finished = code == Z_STREAM_END;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span> (code != Z_OK && !_finished) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <a class="code" href="classgzip_1_1internal_1_1GzipError.html">internal::GzipError</a>(<span class="stringliteral">"Failed to inflate"</span>, stream, code);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordf
low">if</span> (_finished && stream.avail_in > 0) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error</a>(<span class="stringliteral">"Stream finished with data unconsumed"</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// Consume output and reset the buffer.</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  result.append(</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  reinterpret_cast<char*>(buffer),</div><div class="line"><a name="l00151"></a><span class="lineno">
151</span>  <a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a> - stream.avail_out);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  stream.next_out = buffer;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  stream.avail_out = <a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="li
neno"> 159</span>  <span class="comment">// Returns whether the decompression stream is finished.</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// If set to false, more input is expected.</span></div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classgzip_1_1Decompressor.html#af4ba354d45fc080218615318e17f779e"> 161</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classgzip_1_1Decompressor.html#af4ba354d45fc080218615318e17f779e">finished</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> _finished;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l
00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  z_stream_s stream;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">bool</span> _finished;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> };</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment">// Returns a gzip compressed version of the provided string.</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="comment">// The compression level should be within the range [-1
, 9].</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="comment">// See zlib.h:</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="comment">// #define Z_NO_COMPRESSION 0</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// #define Z_BEST_SPEED 1</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment">// #define Z_BEST_COMPRESSION 9</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// #define Z_DEFAULT_COMPRESSION (-1)</span></div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="namespacegzip.html#a6ca8f3e08feb9af115ddcb685b8db57b"> 179</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::
string></a> <a class="code" href="namespacegzip.html#a6ca8f3e08feb9af115ddcb685b8db57b">compress</a>(</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">const</span> std::string& decompressed,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">int</span> level = Z_DEFAULT_COMPRESSION)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// Verify the level is within range.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">if</span> (!(level == Z_DEFAULT_COMPRESSION ||</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  (level >= Z_NO_COMPRESSION && level <= Z_BEST_COMPRESSION))) {</div><div class="line"><
a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error</a>(<span class="stringliteral">"Invalid compression level: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(level));</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  z_stream_s stream;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  stream.next_in =</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">const_cast<</span>Bytef*<span class="keyword">></span>(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>Bytef*
<span class="keyword">></span>(decompressed.data()));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  stream.avail_in = <span class="keyword">static_cast<</span>uInt<span class="keyword">></span>(decompressed.length());</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  stream.zalloc = Z_NULL;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  stream.zfree = Z_NULL;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  stream.opaque = Z_NULL;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordtype">int</span> <a class="code" href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">code</a> = deflateInit2(</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>
  &stream,</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  level, <span class="comment">// Compression level.</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  Z_DEFLATED, <span class="comment">// Compression method.</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  MAX_WBITS + 16, <span class="comment">// Zlib magic for gzip compression / decompression.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  8, <span class="comment">// Default memLevel value.</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  Z_DEFAULT_STRATEGY);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</spa
n> (code != Z_OK) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classgzip_1_1internal_1_1GzipError.html">internal::GzipError</a>(<span class="stringliteral">"Failed to deflateInit2"</span>, stream, code);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(error.<a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">//
Build up the compressed result.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  Bytef buffer[<a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a>];</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  std::string result;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">do</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  stream.next_out = buffer;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  stream.avail_out = <a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  code = deflate(&stream, stream.avail_in > 0 ? Z_NO_FLUSH : Z_FINISH);</div><div class="line"><a name="l00217"></a><span class="li
neno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (code != Z_OK && code != Z_STREAM_END) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classgzip_1_1internal_1_1GzipError.html">internal::GzipError</a>(<span class="stringliteral">"Failed to deflate"</span>, stream, code);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span> (deflateEnd(&stream) != Z_OK) {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"
Failed to deflateEnd"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// Consume output and reset the buffer.</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  result.append(</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  reinterpret_cast<char*>(buffer),</div><div class="line"><a name="l00229"></a><span class=
"lineno"> 229</span>  <a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a> - stream.avail_out);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  stream.next_out = buffer;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  stream.avail_out = <a class="code" href="gzip_8hpp.html#ab5bb6360130257e53d2205c798cccc59">GZIP_BUFFER_SIZE</a>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  } <span class="keywordflow">while</span> (code != Z_STREAM_END);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span> (deflateEnd(&stream) != Z_OK) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3
d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Failed to deflateEnd"</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// Returns a gzip decompressed version of the provided string.</span></div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="namespacegzip.html#a3bbc44fdaf5d546e4399fbf5d479477c"> 243</a></span> <span
class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacegzip.html#a3bbc44fdaf5d546e4399fbf5d479477c">decompress</a>(<span class="keyword">const</span> std::string& compressed)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="classgzip_1_1Decompressor.html">Decompressor</a> decompressor;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="classTry.html">Try<std::string></a> decompressed = decompressor.<a class="code" href="classgzip_1_1Decompressor.html#a2da1313d2c1eb3e9c7609c1a7d1aad31">decompress</a>(compressed);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">// Ensure
that the decompression stream does not expect more input.</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span> (decompressed.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && !decompressor.<a class="code" href="classgzip_1_1Decompressor.html#af4ba354d45fc080218615318e17f779e">finished</a>()) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error</a>(<span class="stringliteral">"More input is expected"</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> dec
ompressed;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> } <span class="comment">// namespace gzip {</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor">#endif // __STOUT_GZIP_HPP__</span></div><div class="ttc" id="classgzip_1_1internal_1_1GzipError_html_ae37852986117d5d162983538ad51dd33"><div class="ttname"><a href="classgzip_1_1internal_1_1GzipError.html#ae37852986117d5d162983538ad51dd33">gzip::internal::GzipError::GzipError</a></div><div class="ttdeci">GzipError(const std::string &message, const z_stream_s &stream, int _code)</div><div class="ttdef"><b>Definition:</b> gzip.hpp:40</div></div>
<div class="ttc" id="namespaceos_html_aa9ac22b4028f187826a9861373006abf"><div class="ttname"><a href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">os::strerror</a></div><div class="ttdeci">std::string strerror(int errno_)</div><div class="ttdoc">A thread-safe version of strerror. </div><div class="ttdef"><b>Definition:</b> strerror.hpp:30</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="classgzip_1_1Decompressor_html"><div class="ttname"><a href="classgzip_1_1Decompressor.html">gzip::Decompressor</a></div><div class="ttdef"><b>Definition:</b> gzip.hpp:88</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classError_html_a8e2d6ac199136b5c2d58b4879c0c80f5"><div class="ttname"><a href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error::Error</a></div><div class="ttdeci">Error(const std::string &_message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:38</div></div>
+<div class="ttc" id="classError_html_a8e2d6ac199136b5c2d58b4879c0c80f5"><div class="ttname"><a href="classError.html#a8e2d6ac199136b5c2d58b4879c0c80f5">Error::Error</a></div><div class="ttdeci">Error(const std::string &_message)</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:39</div></div>
<div class="ttc" id="classgzip_1_1internal_1_1GzipError_html_a24bd2c1643a2982e7a708640c06172cb"><div class="ttname"><a href="classgzip_1_1internal_1_1GzipError.html#a24bd2c1643a2982e7a708640c06172cb">gzip::internal::GzipError::code</a></div><div class="ttdeci">const int code</div><div class="ttdef"><b>Definition:</b> gzip.hpp:52</div></div>
<div class="ttc" id="classgzip_1_1internal_1_1GzipError_html_ad02a2ea02aafea3b6bb9e294511f5cc4"><div class="ttname"><a href="classgzip_1_1internal_1_1GzipError.html#ad02a2ea02aafea3b6bb9e294511f5cc4">gzip::internal::GzipError::GzipError</a></div><div class="ttdeci">GzipError(const z_stream_s &stream, int _code)</div><div class="ttdef"><b>Definition:</b> gzip.hpp:46</div></div>
<div class="ttc" id="namespacegzip_html_a6ca8f3e08feb9af115ddcb685b8db57b"><div class="ttname"><a href="namespacegzip.html#a6ca8f3e08feb9af115ddcb685b8db57b">gzip::compress</a></div><div class="ttdeci">Try< std::string > compress(const std::string &decompressed, int level=Z_DEFAULT_COMPRESSION)</div><div class="ttdef"><b>Definition:</b> gzip.hpp:179</div></div>
@@ -72,7 +72,7 @@
<div class="ttc" id="classgzip_1_1internal_1_1GzipError_html_a329eac2b003b8e0d17ebe4379107d943"><div class="ttname"><a href="classgzip_1_1internal_1_1GzipError.html#a329eac2b003b8e0d17ebe4379107d943">gzip::internal::GzipError::GzipError</a></div><div class="ttdeci">GzipError(const std::string &message, int _code)</div><div class="ttdef"><b>Definition:</b> gzip.hpp:43</div></div>
<div class="ttc" id="abort_8hpp_html"><div class="ttname"><a href="abort_8hpp.html">abort.hpp</a></div></div>
<div class="ttc" id="classgzip_1_1Decompressor_html_a50830001abf74dd578318ef0fc55cfe9"><div class="ttname"><a href="classgzip_1_1Decompressor.html#a50830001abf74dd578318ef0fc55cfe9">gzip::Decompressor::~Decompressor</a></div><div class="ttdeci">~Decompressor()</div><div class="ttdef"><b>Definition:</b> gzip.hpp:113</div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
<div class="ttc" id="namespaceinternal_html"><div class="ttname"><a href="namespaceinternal.html">internal</a></div><div class="ttdef"><b>Definition:</b> attributes.hpp:24</div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &msg, uint32_t code)</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/http__connection_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/http__connection_8hpp_source.html b/content/api/latest/c++/http__connection_8hpp_source.html
index 78ff249..605cdb8 100644
--- a/content/api/latest/c++/http__connection_8hpp_source.html
+++ b/content/api/latest/c++/http__connection_8hpp_source.html
@@ -114,7 +114,7 @@
<div class="ttc" id="future_8hpp_html"><div class="ttname"><a href="future_8hpp.html">future.hpp</a></div></div>
<div class="ttc" id="classprocess_1_1Future_html_a269dcc23e03e8868067c24fe70b65a41"><div class="ttname"><a href="classprocess_1_1Future.html#a269dcc23e03e8868067c24fe70b65a41">process::Future::then</a></div><div class="ttdeci">Future< X > then(lambda::CallableOnce< Future< X >(const T &)> f) const </div><div class="ttdef"><b>Definition:</b> future.hpp:1581</div></div>
<div class="ttc" id="classprocess_1_1Mutex_html_a2983b29453c623f58b843d924598793b"><div class="ttname"><a href="classprocess_1_1Mutex.html#a2983b29453c623f58b843d924598793b">process::Mutex::lock</a></div><div class="ttdeci">Future< Nothing > lock()</div><div class="ttdef"><b>Definition:</b> mutex.hpp:33</div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
<div class="ttc" id="src_2resource__provider_2detector_8hpp_html"><div class="ttname"><a href="src_2resource__provider_2detector_8hpp.html">detector.hpp</a></div></div>
<div class="ttc" id="structNone_html"><div class="ttname"><a href="structNone.html">None</a></div><div class="ttdef"><b>Definition:</b> none.hpp:27</div></div>
<div class="ttc" id="namespaceinternal_html"><div class="ttname"><a href="namespaceinternal.html">internal</a></div><div class="ttdef"><b>Definition:</b> attributes.hpp:24</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/index.hhc
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/index.hhc b/content/api/latest/c++/index.hhc
index 9bb9469..33baa41 100644
--- a/content/api/latest/c++/index.hhc
+++ b/content/api/latest/c++/index.hhc
@@ -15016,7 +15016,7 @@
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="SocketError"><param name="Local" value="error_8hpp.html#a176f6fc34ea37d40201853a52a475762"><param name="ImageNumber" value="11"></OBJECT>
</UL>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="errorbase.hpp"><param name="Local" value="errorbase_8hpp.html"><param name="ImageNumber" value="11"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Name" value="errorbase.hpp"><param name="Local" value="errorbase_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="Error"><param name="Local" value="classError.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
@@ -15032,6 +15032,7 @@
<LI><OBJECT type="text/sitemap"><param name="Name" value="ErrnoError"><param name="Local" value="classErrnoError.html#aa971258da649d454025c8cb89fc97ef6"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="code"><param name="Local" value="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6"><param name="ImageNumber" value="11"></OBJECT>
</UL>
+ <LI><OBJECT type="text/sitemap"><param name="Name" value="operator<<"><param name="Local" value="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0"><param name="ImageNumber" value="11"></OBJECT>
</UL>
<LI><OBJECT type="text/sitemap"><param name="Name" value="exit.hpp"><param name="Local" value="exit_8hpp.html"><param name="ImageNumber" value="1"></OBJECT>
<UL>
@@ -15124,7 +15125,7 @@
<LI><OBJECT type="text/sitemap"><param name="Name" value="AssertExitStatusNe"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#a0eee39affc289ff372336ce8bbeef40a"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="AssertSignaled"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#a799901963033736968a8328d9aa63b38"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="AssertSome"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5"><param name="ImageNumber" value="11"></OBJECT>
- <LI><OBJECT type="text/sitemap"><param name="Name" value="AssertSome"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#a9c42a43dc448160ca174817baa269aaf"><param name="ImageNumber" value="11"></OBJECT>
+ <LI><OBJECT type="text/sitemap"><param name="Name" value="AssertSome"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#aa8a6bf7719a389a661a3580da70a71fd"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="AssertSome"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#ad0bdb0d91a1245ea8ff50ab019aea186"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="AssertSomeEq"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#adb152f87a157c905d17af2d051098df9"><param name="ImageNumber" value="11"></OBJECT>
<LI><OBJECT type="text/sitemap"><param name="Name" value="AssertSomeNe"><param name="Local" value="stout_2include_2stout_2gtest_8hpp.html#a0be5869f812d3562577316398e04271c"><param name="ImageNumber" value="11"></OBJECT>
[02/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2shell_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2shell_8hpp_source.html b/content/api/latest/c++/windows_2shell_8hpp_source.html
index 1289c0b..47f1be7 100644
--- a/content/api/latest/c++/windows_2shell_8hpp_source.html
+++ b/content/api/latest/c++/windows_2shell_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="windows_2shell_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">/
/</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cla
ss="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_SHELL_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_SHELL_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <process.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <stdarg.h></span> <span class="comment">// For va_list, va_start, etc.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00020"
></a><span class="lineno"> 20</span> <span class="preprocessor">#include <array></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></d
iv><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="os_8hpp.html">stout/os.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><d
iv class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="inherit_8hpp.html">stout/internal/windows/inherit.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span>windows {</div><div class="line"><
a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Retrieves system environment in a `std::map`, ignoring</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// the current process's environment variables.</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a8fc9ccf78565ac55f90070486d385227"> 42</a></span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<std::map<std::wstring, std::wstring></a>> <a class="code" href="namespaceinternal_1_1windows.html#a8fc9ccf78565ac55f90070486d385227">get_system_env</a>()</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::m
ap<std::wstring, std::wstring> system_env;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">wchar_t</span>* env_entry = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Get the system environment.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// The third parameter (bool) tells the function *not* to inherit</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// variables from the current process.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span> (!::CreateEnvironmentBlock((LPVOID*)&env_entry, <span class="keyword">nullptr</span>
, FALSE)) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Save the environment block in order to destroy it later.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">wchar_t</span>* env_block = env_entry;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">while</span> (*env_entry != L<span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00058"
></a><span class="lineno"> 58</span>  <span class="comment">// Each environment block contains the environment variables as follows:</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Var1=Value1\0</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Var2=Value2\0</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Var3=Value3\0</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// ...</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// VarN=ValueN\0\0</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// The name of an environment variable cannot include an equal sign (=).</span></
div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Construct a string from the pointer up to the first '\0',</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// e.g. "Var1=Value1\0", then split into name and value.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::wstring entry(env_entry);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::wstring::size_type separator = entry.find(L<span class="stringliteral">"="</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::wstring var_name(entry.substr(0, separator));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::wstring varV
al(entry.substr(separator + 1));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Mesos variables are upper case. Convert system variables to</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// match the name provided by the scheduler in case of a collision.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// This is safe because Windows environment variables are case insensitive.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespacemesos_1_1internal_1_1recordio.html#a5fcab68176c462aaeed909f304c91bdf">std::transform</a>(</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  var_name.begin(), var_name
.end(), var_name.begin(), ::towupper);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// The system environment has priority.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  system_env.insert_or_assign(var_name.data(), varVal.data());</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Advance the pointer the length of the entry string plus the '\0'.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  env_entry += entry.length() + 1;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </d
iv><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  ::DestroyEnvironmentBlock(env_block);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> system_env;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Creates a null-terminated array of null-terminated strings that will be</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// passed to `CreateProcessW` as the `lpEnvironment` argument, as described by</span></div><div class="line"><
a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// MSDN[1]. This array needs to be sorted in alphabetical order, but the `map`</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// already takes care of that. Note that this function explicitly handles</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// UTF-16 environments, so it must be used in conjunction with the</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// `CREATE_UNICODE_ENVIRONMENT` flag.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">//</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// NOTE: This function will add the system's environment variables into</span></div><div cl
ass="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// the returned string. These variables take precedence over the provided</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// `env` and are generally necessary in order to launch things on Windows.</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">//</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx</span></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a7b6974b9ba88dd5d9658c40268147581"> 104</a></span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<std::wstring></a> <a class="code" href="namespaceintern
al_1_1windows.html#a7b6974b9ba88dd5d9658c40268147581">create_process_env</a>(</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a><std::map<std::string, std::string>>& env)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span> (env.isNone() || (env.isSome() && env.get().size() == 0)) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno">
111</span>  <a class="code" href="classOption.html">Option<std::map<std::wstring, std::wstring></a>> system_env = <a class="code" href="namespaceinternal_1_1windows.html#a8fc9ccf78565ac55f90070486d385227">get_system_env</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// The system environment must be non-empty.</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// No subprocesses will be able to launch if the system environment is blank.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  CHECK(system_env.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() && system_env.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>().size() > 0);</div
><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::map<std::wstring, std::wstring> combined_env;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// Populate the combined environment first with the system environment.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> std::wstring& key,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> std::wstring& value,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  system_env.<a
class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  combined_env[key] = value;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Now override with the supplied environment.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> std::string& key,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> std::string& value,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span
>  env.get()) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  combined_env[wide_stringify(key)] = wide_stringify(value);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  std::wstring env_string;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (<span class="keyword">const</span> std::wstring& key,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">const</span> std::wstring& value,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  combined_env) {</div><div class="line"><a na
me="l00137"></a><span class="lineno"> 137</span>  env_string += key + L<span class="charliteral">'='</span> + value + L<span class="charliteral">'\0'</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// Append final null terminating character.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  env_string.push_back(L<span class="charliteral">'\0'</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> env_string;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><
a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// Concatenates multiple command-line arguments and escapes the values.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// NOTE: This is necessary even when using Windows APIs that "appear"</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// to take arguments as a list, because those APIs will themselves</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// concatenate command-line arguments *without* escaping them.</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">//</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span cla
ss="comment">// This function escapes arguments with the following rules:</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// 1) Any argument with a space, tab, newline, vertical tab,</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// or double-quote must be surrounded in double-quotes.</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// 2) Backslashes at the very end of an argument must be escaped.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// 3) Backslashes that precede a double-quote must be escaped.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// The double-quote must also be escaped.</span></div><div class="line"><a name="l00157"></a><span cl
ass="lineno"> 157</span> <span class="comment">//</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// NOTE: The below algorithm is adapted from Daniel Colascione's public domain</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// algorithm for quoting command line arguments on Windows for `CreateProcess`.</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">//</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// https://blogs.msdn.microsoft.com/twistylittlepassagesallalike/2011/04/23/everyone-quotes-command-line-arguments-the-wrong-way/</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00163"></a>
<span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#a80d683d0925b1bfbff4bea3a5aa2e9b9"> 163</a></span> <span class="keyword">inline</span> std::wstring <a class="code" href="namespaceinternal_1_1windows.html#a80d683d0925b1bfbff4bea3a5aa2e9b9">stringify_args</a>(<span class="keyword">const</span> std::vector<std::string>& argv)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  std::wstring command;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> argit = argv.cbegin(); argit != argv.cend(); ++argit) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  std::wstring arg = wide_stringify(*argit);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span
class="comment">// Don't quote empty arguments or those without troublesome characters.</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (!arg.empty() && arg.find_first_of(L<span class="stringliteral">" \t\n\v\""</span>) == arg.npos) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  command.append(arg);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// Beginning double quotation mark.</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  command.push_back(L<span class="charliteral">'"'</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span clas
s="keywordflow">for</span> (<span class="keyword">auto</span> it = arg.cbegin(); it != arg.cend(); ++it) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Count existent backslashes in argument.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> backslashes = 0;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">while</span> (it != arg.cend() && *it == L<span class="charliteral">'\\'</span>) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  ++it;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  ++backslashes;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><
a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span> (it == arg.cend()) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// Escape all backslashes, but let the terminating double quotation</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// mark we add below be interpreted as a metacharacter.</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  command.append(backslashes * 2, L<span class="charliteral">'\\'</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  } <span class="keywordf
low">else</span> <span class="keywordflow">if</span> (*it == L<span class="charliteral">'"'</span>) {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// Escape all backslashes and the following double quotation mark.</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  command.append(backslashes * 2 + 1, L<span class="charliteral">'\\'</span>);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  command.push_back(*it);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// Backslashes aren't special here.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  command.ap
pend(backslashes, L<span class="charliteral">'\\'</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  command.push_back(*it);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Terminating double quotation mark.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  command.push_back(L<span class="charliteral">'"'</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// Space separate arguments (bu
t don't append at end).</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (argit != argv.cend() - 1) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  command.push_back(L<span class="charliteral">' '</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// Append final null terminating character.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  command.push_back(L<span class="charliteral">'\0'</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> command;</div><div class="line"><a name="l00
209"></a><span class="lineno"> 209</span> }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1ProcessData.html"> 212</a></span> <span class="keyword">struct </span><a class="code" href="structinternal_1_1windows_1_1ProcessData.html">ProcessData</a> {</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d"> 213</a></span>  <a class="code" href="classSharedHandle.html">SharedHandle</a> <a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">process_handle</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1Proces
sData.html#a7160cf48fc6e70d9390233b246b93bee"> 214</a></span>  <a class="code" href="classSharedHandle.html">SharedHandle</a> <a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a7160cf48fc6e70d9390233b246b93bee">thread_handle</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25"> 215</a></span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a65a4a4aba5450087363bfffdb30eea25">pid</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> };</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno">
219</span> <span class="comment">// Provides an interface for creating a child process on Windows.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">//</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">// The `command` argument is given for compatibility, and is ignored. This is</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment">// because the `CreateProcess` will use `argv[0]` as the command to be executed,</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">// and will perform a `PATH` lookup. If `command` were to be used instead,</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment">// `CreateProcess` would require an absolute path.</span></div><div class="line"><a name="l0022
5"></a><span class="lineno"> 225</span> <span class="comment">//</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="comment">// If `create_suspended` is `true`, the process will not be started, and the</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment">// caller must use `ResumeThread` to start the process.</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment">//</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment">// The caller can specify explicit `stdin`, `stdout`, and `stderr` handles,</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// in that order, for the process via the `pipes` argument.</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <spa
n class="comment">//</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// NOTE: If `pipes` are specified, they will be temporarily set to</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment">// inheritable, and then set to uninheritable. This is a side effect</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="comment">// on each `HANDLE`.</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment">//</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// The return value is a `ProcessData` struct, with the process and thread</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// handles each saved in a `SharedHandle`, ensuring they are closed w
hen struct</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// goes out of scope.</span></div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f"> 239</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<ProcessData></a> <a class="code" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f">create_process</a>(</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">const</span> std::string& command,</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keyword">const</span> std::vector<std::string>& argv,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> <a class="code" href="
classOption.html">Option</a><std::map<std::string, std::string>>& <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>,</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> create_suspended = <span class="keyword">false</span>,</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a><std::array<int_fd, 3>>& pipes = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// TODO(andschwa): Assert that `command` and `argv[0]` are the same.</span></div><div class="line"><a name="l00247"></a><
span class="lineno"> 247</span>  <span class="keyword">const</span> std::wstring arg_string = <a class="code" href="namespaceinternal_1_1windows.html#a80d683d0925b1bfbff4bea3a5aa2e9b9">stringify_args</a>(argv);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  std::vector<wchar_t> arg_buffer(arg_string.begin(), arg_string.end());</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  arg_buffer.push_back(L<span class="charliteral">'\0'</span>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="comment">// Create the process with a Unicode environment.</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  DWORD creation_flags = CREATE_UNICODE_ENVIRONMENT;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&
#160; <span class="keywordflow">if</span> (create_suspended) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  creation_flags |= CREATE_SUSPENDED;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// Construct the environment that will be passed to `::CreateProcessW`.</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::wstring></a> env_string = <a class="code" href="namespaceinternal_1_1windows.html#a7b6974b9ba88dd5d9658c40268147581">create_process_env</a>(<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>);</div><div class="li
ne"><a name="l00259"></a><span class="lineno"> 259</span>  std::vector<wchar_t> env_buffer;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span> (env_string.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// This string contains the necessary null characters.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  env_buffer.assign(env_string.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>().begin(), env_string.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>().end());</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class
="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordtype">wchar_t</span>* process_env = env_buffer.empty() ? <span class="keyword">nullptr</span> : env_buffer.data();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  PROCESS_INFORMATION process_info = {};</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  STARTUPINFOW startup_info = {};</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  startup_info.cb = <span class="keyword">sizeof</span>(STARTUPINFOW);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">// Hook up the stdin/out/err pipes and
use the `STARTF_USESTDHANDLES`</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// flag to instruct the child to use them [1].</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// A more user-friendly example can be found in [2].</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">//</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// [2] https://msdn.microsoft.com/en-us/library/windows/desktop/ms682499(v=vs.85).aspx</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">
if</span> (pipes.isSome()) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// Each of these handles must be inheritable.</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>& fd, pipes.get()) {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<Nothing></a> inherit = <a class="code" href="namespaceinternal_1_1windows.html#a9dc48dc50b21cb8cee5237630460c4bd">set_inherit</a>(fd, <span class="keyword">true</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">if</span> (inherit.<a class="code" href="classTry.html#a0b98f95163b8a38daafd
1651b043a276">isError</a>()) {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(inherit.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  startup_info.dwFlags |= STARTF_USESTDHANDLES;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  startup_info.hStdInput = std::get<0>(pipes.get());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  startup_info.hStdOutput = std::get<1>(pipes.get());</div><d
iv class="line"><a name="l00290"></a><span class="lineno"> 290</span>  startup_info.hStdError = std::get<2>(pipes.get());</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keyword">const</span> BOOL result = ::CreateProcessW(</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="comment">// This is replaced by the first token of `arg_buffer` string.</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  static_cast<LPCWSTR>(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  static_cast<LPWSTR>(arg_buffer.data()),</div><div class="line"><a name="l00297"></a><span class="lineno">
297</span>  static_cast<LPSECURITY_ATTRIBUTES>(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">static_cast<</span>LPSECURITY_ATTRIBUTES<span class="keyword">></span>(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  TRUE, <span class="comment">// Inherit parent process handles (such as those in `pipes`).</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  creation_flags,</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  static_cast<LPVOID>(process_env),</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keyword">static_cast<</span>LPCWSTR<span class="keyword">></span>(<span class="keyword">nullptr</span>), <span class="comment">// Inherit w
orking directory.</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  &startup_info,</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  &process_info);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">// NOTE: The MSDN documentation for `CreateProcess` states that it</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// returns before the process has "finished initialization," but is</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// not clear on precisely what initialization entails. It would seem</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">// that
this does not affect inherited handles, as it stands to</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// reason that the system call to `CreateProcess` causes inheritable</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="comment">// handles to become inherited, and not some "initialization" of the</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// child process. However, if an inheritance race condition</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="comment">// manifests, this assumption should be re-evaluated.</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span> (pipes.isSo
me()) {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="comment">// These handles should no longer be inheritable. This prevents other child</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="comment">// processes from accidentally inheriting the wrong handles.</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">//</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">// NOTE: This is explicit, and does not take into account the</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="comment">// previous inheritance semantics of each `HANDLE`. It is assumed</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">// that users of this function s
end non-inheritable handles.</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a>& fd, pipes.get()) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<Nothing></a> inherit = <a class="code" href="namespaceinternal_1_1windows.html#a9dc48dc50b21cb8cee5237630460c4bd">set_inherit</a>(fd, <span class="keyword">false</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">if</span> (inherit.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">return
</span> <a class="code" href="classError.html">Error</a>(inherit.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span> (result == FALSE) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="stringliteral">"Failed to call `CreateProcess`: "<
/span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(arg_string));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> <a class="code" href="structinternal_1_1windows_1_1ProcessData.html">ProcessData</a>{<a class="code" href="classSharedHandle.html">SharedHandle</a>{process_info.hProcess, ::CloseHandle},</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="classSharedHandle.html">SharedHandle</a>{process_info.hThread, ::CloseHandle},</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">static_cast<</span><a class="code" href="3rdparty_2stout_2include_2st
out_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a><span class="keyword">></span>(process_info.dwProcessId)};</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> } <span class="comment">// namespace windows {</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="keyword">namespace </span>Shell {</div><div class="line"><a name="l00345"
></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment">// Canonical constants used as platform-dependent args to `exec` calls.</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment">// `name` is the command name, `arg0` is the first argument received</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment">// by the callee, usually the command name and `arg1` is the second</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment">// command argument received by the callee.</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">n
ame</a> = <span class="stringliteral">"cmd.exe"</span>;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">arg0</a> = <span class="stringliteral">"cmd.exe"</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">arg1</a> = <span class="stringliteral">"/c"</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> } <span class="comment">// namespace Shell {</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> 
</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="keyword">template</span> <<span class="keyword">typename</span>... T></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#a0d86320d7799ea761599bc356c02a4fa">shell</a>(<span class="keyword">const</span> std::string& fmt, <span class="keyword">const</span> T&... t) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="keyword">template</span><<span class="keyword">typename</span>... T></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="keyword">inlin
e</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#a4b727e301623549c37cdfcd8c553a2c7">execlp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>, T... t) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="comment">// Executes a command by calling "<command> <arguments...>", and</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="comment">// returns after the command has been completed. Returns the process exit</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="co
mment">// code on success and `None` on error.</span></div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="namespaceos.html#abedec07e6e468b54920d3b921a49eb36"> 367</a></span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<int></a> <a class="code" href="namespaceos.html#abedec07e6e468b54920d3b921a49eb36">spawn</a>(</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">const</span> std::string& command,</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keyword">const</span> std::vector<std::string>& arguments,</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option</a><std::map<std::string, std::string>>& <a class="code" href="namespacemesos_1_1internal_1_1test
s.html#a1396c5e3b0a179220de2792d74770ec2">environment</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="classTry.html">Try<::internal::windows::ProcessData></a> process_data =</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="namespaceinternal_1_1windows.html#aaaa193083fd4f24a2e92e57ee8a8319f">::internal::windows::create_process</a>(command, arguments, <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">if</span> (process_data.<a class="code" href="classTry.html#a0b98f9
5163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  LOG(WARNING) << process_data.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Wait for the process synchronously.</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  ::WaitForSingleObject(</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  process_data-><a class="code" href="structin
ternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">process_handle</a>.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(), INFINITE);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  DWORD <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (!::GetExitCodeProcess(</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  process_data-><a class="code" href="structinternal_1_1windows_1_1ProcessData.html#a96c76121644bd430e9ca67cf57636c0d">process_handle</a>.<a class="code" href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">get_handle</a>(),</div><div class="line"><a name="l00387"></a><span class="
lineno"> 387</span>  &<a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>)) {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  LOG(WARNING) << <span class="stringliteral">"Failed to `GetExitCodeProcess`: "</span> << command;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="comment">// Return the child exit code.</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<<
/span><span class="keywordtype">int</span><span class="keyword">></span>(<a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="comment">// Executes a command by calling "cmd /c <command>", and returns</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment">// after the command has been completed. Returns the process exit</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment">// code on success and `None` on error.</span></div><div class="line"><a name="l00400"></a><span class=
"lineno"> 400</span> <span class="comment">//</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="comment">// Note: Be cautious about shell injection</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="comment">// (https://en.wikipedia.org/wiki/Code_injection#Shell_injection)</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="comment">// when using this method and use proper validation and sanitization</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="comment">// on the `command`. For this reason in general `os::spawn` is</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="comment">// preferred if a shell is not required.</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="
keyword">inline</span> <a class="code" href="classOption.html">Option<int></a> <a class="code" href="namespaceos.html#a75eb48541200e89e498d3d324ffc3089">system</a>(<span class="keyword">const</span> std::string& command)</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os::spawn</a>(<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">Shell::name</a>, {<a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">Shell::arg0</a>, <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">Shell::arg1</a>, command});</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410<
/span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="comment">// In order to emulate the semantics of `execvp`, `os::spawn` waits for the new</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="comment">// process to exit, and returns its error code, which is propogated back to the</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="comment">// parent via `exit` here.</span></div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="namespaceos.html#a1de77f208d0bc72cf79e7eb9a6b487c7"> 415</a></span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#a1de77f208d0bc72cf79e7eb9a6b487c7">execvp</a>(</div><div class="line"><a name="l00416"></a><span class="
lineno"> 416</span>  <span class="keyword">const</span> std::string& command,</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">const</span> std::vector<std::string>& argv)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  exit(<a class="code" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os::spawn</a>(command, argv).getOrElse(-1));</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00424"></a><span class="lineno">
424</span> <span class="comment">// NOTE: This function can accept `Argv` and `Envp` constructs through their</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="comment">// explicit type conversions, but unlike the POSIX implementations, it cannot</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="comment">// accept the raw forms.</span></div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8"> 427</a></span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#aebc3586b2be0d2b9093ccfbf25dfcde8">execvpe</a>(</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keyword">const</span> std::string& command,</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&
#160; <span class="keyword">const</span> std::vector<std::string>& argv,</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">const</span> std::map<std::string, std::string>& envp)</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  exit(<a class="code" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os::spawn</a>(command, argv, envp).getOrElse(-1));</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> } <span class="comment">// namespace os {</span></div><d
iv class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_SHELL_HPP__</span></div><div class="ttc" id="namespaceinternal_1_1windows_html_a80d683d0925b1bfbff4bea3a5aa2e9b9"><div class="ttname"><a href="namespaceinternal_1_1windows.html#a80d683d0925b1bfbff4bea3a5aa2e9b9">internal::windows::stringify_args</a></div><div class="ttdeci">std::wstring stringify_args(const std::vector< std::string > &argv)</div><div class="ttdef"><b>Definition:</b> shell.hpp:163</div></div>
<div class="ttc" id="namespaceos_1_1Shell_html_a44f50f66f2a231de974b53c9f4384ba5"><div class="ttname"><a href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">os::Shell::arg1</a></div><div class="ttdeci">constexpr const char * arg1</div><div class="ttdef"><b>Definition:</b> shell.hpp:45</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="classSharedHandle_html_a800385e17e17cb826147968e748fd8fa"><div class="ttname"><a href="classSharedHandle.html#a800385e17e17cb826147968e748fd8fa">SharedHandle::get_handle</a></div><div class="ttdeci">HANDLE get_handle() const </div><div class="ttdef"><b>Definition:</b> windows.hpp:90</div></div>
<div class="ttc" id="classSharedHandle_html"><div class="ttname"><a href="classSharedHandle.html">SharedHandle</a></div><div class="ttdef"><b>Definition:</b> windows.hpp:72</div></div>
[46/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2read_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2read_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2read_8hpp_source.html
index b5daed6..cf13841 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2read_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2read_8hpp_source.html
@@ -54,11 +54,11 @@
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#
160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12
</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_READ_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_READ_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <assert.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00020">
</a><span class="lineno"> 20</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#if defined(__sun) || defined(__WINDOWS__)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#endif // __sun || __WINDOWS__</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class
="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code"
href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2socket_8hpp.html">stout/os/socket.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00040
"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2windows_2read_8hpp.html">stout/os/windows/read.hpp</a>></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span
class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2posix_2read_8hpp.html">stout/os/posix/read.hpp</a>></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Reads 'size' bytes from a file from its current offset.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comme
nt">// If EOF is encountered before reading 'size' bytes then the result</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// will contain the bytes read and a subsequent read will return None.</span></div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7"> 55</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd, <span class="keywordtype">size_t</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 5
7</span>  <span class="keywordtype">char</span>* buffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">size_t</span> offset = 0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">while</span> (offset < size) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a> length = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(fd, buffer + offset, size - offset);</div><div class="line"><a name="l00062"></a><span class="lineno
"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// NOTE: There is no actual difference between `WSAGetLastError` and</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// `GetLastError`, the former is an alias for the latter. As such, there is</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// no difference between `WindowsError` and `WindowsSocketError`, so we can</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// simply use the former here for both `HANDLE` and `SOCKET` types of</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> 
<span class="comment">// `int_fd`. See MESOS-8764.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classWindowsError.html">WindowsError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classErrnoError.html">ErrnoError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><sp
an class="lineno"> 74</span>  <span class="keywordflow">if</span> (length < 0) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// TODO(bmahler): Handle a non-blocking fd? (EAGAIN, EWOULDBLOCK)</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacenet.html#a190d273d305decda6696ed04b3adbd59">net::is_restartable_error</a>(error.<a class="code" href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6">code</a>)) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name=
"l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (length == 0) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Reached EOF before expected! Only return as much data as</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// available or None if we haven't read anything yet.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (offset > 0) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::str
ing result(buffer, offset);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  offset += length;</div><div
class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  std::string result(buffer, size);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// Returns the contents of the file.</span></div><div class="line"><a name="l00103"></a><span
class="lineno"> 103</span> <span class="comment">// NOTE: getline is not available on Solaris so we use STL.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#if defined(__sun)</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  std::ifstream <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>(path.c_str());</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>
  <span class="keywordflow">if</span> (!<a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>.is_open()) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Does ifstream actually set errno?</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to open file"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> std::string((std::istreambuf_iterator<char>(<a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>)),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#
160; (std::istreambuf_iterator<char>()));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// NOTE: Windows needs Unicode long path support.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#elif defined(__WINDOWS__)</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<span class="keyword">const</span> std::string& path)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">const</span> std::wstr
ing <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a> = <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">::internal::windows::longpath</a>(path);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// NOTE: The `wchar_t` constructor of `ifstream` is an MSVC</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// extension.</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">//</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// TODO(andschwa): This might need `io_base::binary` like other</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// streams on Windows.</span></div><div class="line
"><a name="l00125"></a><span class="lineno"> 125</span>  std::ifstream <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>(longpath.data());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>.is_open()) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to open file"</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> std::string((std::istreambuf_iterator&
lt;char>(<a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>)),</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  (std::istreambuf_iterator<char>()));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="namespaceos.html#ac7e4e9ac378b8ccbf2faecdfb3f3a825"> 134</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>(<span class="keyword">const</span> std::string& path)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><sp
an class="lineno"> 136</span>  FILE* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a> = ::fopen(path.c_str(), <span class="stringliteral">"r"</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (file == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// Use a buffer to read the file in BUFSIZ</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="
comment">// chunks and append it to the string we return.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">//</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// NOTE: We aren't able to use fseek() / ftell() here</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// to find the file size because these functions don't</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// work properly for in-memory files like /proc/*/stat.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">char</span>* buffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[BUFSIZ];</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  st
d::string result;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a> = ::fread(buffer, 1, BUFSIZ, file);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span> (::ferror(file)) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// NOTE: ferror() will not modify errno if the stream</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> 
<span class="comment">// is valid, which is the case here since it is open.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="classErrnoError.html">ErrnoError</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  ::fclose(file);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lin
eno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  result.append(buffer, read);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (read != BUFSIZ) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  assert(feof(file));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  };</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  ::fclose(file);</div><div class="line"><a name=
"l00171"></a><span class="lineno"> 171</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#endif // __sun || __WINDOWS__</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#endif // __STOUT_OS_READ_HPP__</span></div><div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a894c
4d58faeee7675b9e7e8244de1386"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a894c4d58faeee7675b9e7e8244de1386">ssize_t</a></div><div class="ttdeci">SSIZE_T ssize_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:186</div></div>
<div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:106</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="stout_2include_2stout_2os_2socket_8hpp_html"><div class="ttname"><a href="stout_2include_2stout_2os_2socket_8hpp.html">socket.hpp</a></div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
@@ -73,7 +73,7 @@
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
<div class="ttc" id="structNone_html"><div class="ttname"><a href="structNone.html">None</a></div><div class="ttdef"><b>Definition:</b> none.hpp:27</div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &msg, uint32_t code)</div></div>
-<div class="ttc" id="classErrnoError_html_ae512d4301c6ef39767a39a5636810ff6"><div class="ttname"><a href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6">ErrnoError::code</a></div><div class="ttdeci">const int code</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:62</div></div>
+<div class="ttc" id="classErrnoError_html_ae512d4301c6ef39767a39a5636810ff6"><div class="ttname"><a href="classErrnoError.html#ae512d4301c6ef39767a39a5636810ff6">ErrnoError::code</a></div><div class="ttdeci">const int code</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:63</div></div>
<div class="ttc" id="stringify_8hpp_html"><div class="ttname"><a href="stringify_8hpp.html">stringify.hpp</a></div></div>
<div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
<div class="ttc" id="int__fd_8hpp_html"><div class="ttname"><a href="int__fd_8hpp.html">int_fd.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2fs_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2fs_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2fs_8hpp_source.html
index 963dea7..56180cf 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2fs_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2fs_8hpp_source.html
@@ -57,7 +57,7 @@
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespacefs_html_a68279f7514744bb2af74dfce8bb0bbc7"><div class="ttname"><a href="namespacefs.html#a68279f7514744bb2af74dfce8bb0bbc7">fs::symlink</a></div><div class="ttdeci">Try< Nothing > symlink(const std::string &original, const std::string &link)</div><div class="ttdef"><b>Definition:</b> fs.hpp:54</div></div>
<div class="ttc" id="os_8hpp_html"><div class="ttname"><a href="os_8hpp.html">os.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespacefs_html_a60a9e5ca4119866d80691ce3c4701dc9"><div class="ttname"><a href="namespacefs.html#a60a9e5ca4119866d80691ce3c4701dc9">fs::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path="/")</div><div class="ttdef"><b>Definition:</b> fs.hpp:32</div></div>
<div class="ttc" id="namespacefs_html"><div class="ttname"><a href="namespacefs.html">fs</a></div><div class="ttdef"><b>Definition:</b> fs.hpp:29</div></div>
<div class="ttc" id="namespacefs_html_a3bd12b75af66bfabbd764e9c66ea80c6"><div class="ttname"><a href="namespacefs.html#a3bd12b75af66bfabbd764e9c66ea80c6">fs::list</a></div><div class="ttdeci">Try< std::list< std::string > > list(const std::string &pattern)</div><div class="ttdef"><b>Definition:</b> fs.hpp:75</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2ip_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2ip_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2ip_8hpp_source.html
index 4f88b6e..be94bae 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2ip_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2ip_8hpp_source.html
@@ -53,11 +53,11 @@
</div><!--header-->
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2posix_2ip_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&
#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 1
2</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_POSIX_IP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_POSIX_IP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <ifaddrs.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></di
v><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"
> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classnet_1_1IP_1_1Network.html#a2fddda437abb4b15242e00d0563b9617"> 30</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<IP::Network></a> <a class="code" href="classnet_1_1IP_1_1Network.html#a2fddda437abb4b15242e00d0563b9617">IP::Network::fromLinkDevice</a>(</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> 
<span class="keywordtype">int</span> family)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span> (family != AF_INET && family != AF_INET6) {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unsupported family type: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(family));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">struct </span>ifaddrs* ifaddr = <span class="keyword">nullptr</spa
n>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span> (getifaddrs(&ifaddr) == -1) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Indicates whether the link device is found or not.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="li
neno"> 46</span>  <span class="keywordflow">for</span> (<span class="keyword">struct</span> ifaddrs* ifa = ifaddr; ifa != <span class="keyword">nullptr</span>; ifa = ifa->ifa_next) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (ifa->ifa_name != <span class="keyword">nullptr</span> && !strcmp(ifa->ifa_name, name.c_str())) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  found = <span class="keyword">true</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span> (ifa->ifa_addr != <span class="keyword">nullptr</span> && ifa->ifa_addr->sa_family == family) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="c
lassnet_1_1IP.html">IP</a> <a class="code" href="classnet_1_1IP_1_1Network.html#a695af4d391431eaf349b81615baf90de">address</a> = <a class="code" href="classnet_1_1IP.html#ada206eb1ab14c032f071daf9b8c1b96c">IP::create</a>(*ifa->ifa_addr).get();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (ifa->ifa_netmask != <span class="keyword">nullptr</span> &&</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ifa->ifa_netmask->sa_family == family) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classnet_1_1IP.html">IP</a> <a class="code" href="classnet_1_1IP_1_1Network.html#a6b8b0d0e7dfb45cf184e547428376b02">netmask</a> = <a class="code" href="classnet_1_1IP.html#ada206eb1ab14c032f071daf9b8c1b96c">IP:
:create</a>(*ifa->ifa_netmask).get();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classTry.html">Try<IP::Network></a> network = <a class="code" href="classnet_1_1IP_1_1Network.html#aae567f80d6cee424de7a5ddaf4fcc912">IP::Network::create</a>(address, netmask);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (network.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <a class="code"
href="classError.html">Error</a>(network.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> network.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <spa
n class="comment">// Note that this is the case where netmask is not specified.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// We've seen such cases when VPN is used. In that case, a</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// default /32 prefix for IPv4 and /64 for IPv6 is used.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">int</span> <a class="code" href="classnet_1_1IP_1_1Network.html#a4058bf3b6ef0142f5f1fd0827171fcba">prefix</a> = (family == AF_INET ? 32 : 64);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classTry.html">Try<IP::Network></a> network = <a class="code" href="classnet_1_1IP_1_1N
etwork.html#aae567f80d6cee424de7a5ddaf4fcc912">IP::Network::create</a>(address, prefix);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (network.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(network.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> network.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div c
lass="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span> (!found) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot find the link device"</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> 
; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#endif // __STOUT_POSIX_IP_HPP__</span></div><div class="ttc" id="classnet_1_1IP_1_1Network_html_a695af4d391431eaf349b81615baf90de"><div class="ttname"><a href="classnet_1_1IP_1_1Network.html#a695af4d391431eaf349b81615baf90de">net::IP::
Network::address</a></div><div class="ttdeci">IP address() const </div><div class="ttdef"><b>Definition:</b> ip.hpp:261</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
<div class="ttc" id="classnet_1_1IP_html"><div class="ttname"><a href="classnet_1_1IP.html">net::IP</a></div><div class="ttdef"><b>Definition:</b> ip.hpp:73</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2net_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2net_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2net_8hpp_source.html
index 73587c0..9e8d6ee 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2net_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2posix_2net_8hpp_source.html
@@ -54,12 +54,12 @@
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2posix_2net_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>
 <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">
12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_POSIX_NET_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_POSIX_NET_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div
class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </d
iv><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespacenet.html#a53ce199fa12dea2d59df0ddfd1f04acd"> 28</a></span> <span class="keyword">inline</span> <span class="keyword">struct </span>addrinfo <a class="code" href="namespacenet.html#a53ce199fa12dea2d59df0ddfd1f04acd">createAddrInfo</a>(int socktype, int family, int <a class="code" href="namespaceflags.html">flags</a>)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">struct </span>addrinfo addr;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  memset(&addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  addr.ai_socktype = socktype;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  addr.ai_
family = family;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  addr.ai_flags |= <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">return</span> addr;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Returns a Try of the hostname for the provided IP. If the hostname</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// cannot be resolved, then a string
version of the IP address is</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// returned.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// TODO(benh): Merge with `net::hostname`.</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespacenet.html#a9228d72b9850d1b39d54b5784068fa1f"> 45</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacenet.html#a9228d72b9850d1b39d54b5784068fa1f">getHostname</a>(<span class="keyword">const</span> <a class="code" href="classnet_1_1IP.html">IP</a>& ip)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l0
0047"></a><span class="lineno"> 47</span>  <span class="keyword">struct </span>sockaddr_storage storage;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  memset(&storage, 0, <span class="keyword">sizeof</span>(storage));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">switch</span> (ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>()) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> AF_INET: {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">struct </span>sockaddr_in addr;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  memset(&addr, 0, <span class="keyword">sizeof</spa
n>(addr));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  addr.sin_family = AF_INET;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  addr.sin_addr = ip.<a class="code" href="classnet_1_1IP.html#a9b2b8da4b79c15e6632a9305a3d4c7cb">in</a>().get();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  addr.sin_port = 0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  memcpy(&storage, &addr, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span c
lass="keywordflow">case</span> AF_INET6: {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">struct </span>sockaddr_in6 addr;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  memset(&addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  addr.sin6_family = AF_INET6;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  addr.sin6_addr = ip.<a class="code" href="classnet_1_1IP.html#ad81fc914433c4874645a406471f57b34">in6</a>().get();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  addr.sin6_port = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  memcpy(&storage, &addr, <span class="keyword"
>sizeof</span>(addr));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Unsupported family type: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>()));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="l
ine"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">char</span> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>[<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afd80ecbe3170ca4fc85b65cda8659f82">MAXHOSTNAMELEN</a>];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  socklen_t length;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>() == AF_INET) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  length = <span class="keyword">sizeof</span>(<span class="keyword">struct </span>sockadd
r_in);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>() == AF_INET6) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  length = <span class="keyword">sizeof</span>(<span class="keyword">struct </span>sockaddr_in6);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unknown address family: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515b
f28c03">family</a>()));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = getnameinfo(</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  (<span class="keyword">struct</span> sockaddr*) &storage,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  length,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  hostname,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afd80ecbe3170ca4fc85b65cda8659f82
">MAXHOSTNAMELEN</a>,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  0,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(std::string(gai_strerror(error)));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="line
no"> 100</span>  <span class="keywordflow">return</span> std::string(hostname);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// Returns a Try of the IP for the provided hostname or an error if no IP is</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// obtained.</span></div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespacenet.html#aa8c693ebde304b17ed7e1d55cd77121a"> 106</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<IP></a> <a class="code" href="namespacenet.html#aa8c693ebde304b17ed7e1d55cd77121a">getIP</a>(<span
class="keyword">const</span> std::string& <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>, <span class="keywordtype">int</span> family = AF_UNSPEC)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">struct </span>addrinfo hints = <a class="code" href="namespacenet.html#a53ce199fa12dea2d59df0ddfd1f04acd">createAddrInfo</a>(SOCK_STREAM, family, 0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">struct </span>addrinfo* result = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#
ae58e703656ab4a1bd5d9870441236727">error</a> = getaddrinfo(hostname.c_str(), <span class="keyword">nullptr</span>, &hints, &result);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(gai_strerror(error));</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (result->ai_addr == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> 
freeaddrinfo(result);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"No addresses found"</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classTry.html">Try<IP></a> ip = <a class="code" href="classnet_1_1IP.html#ada206eb1ab14c032f071daf9b8c1b96c">IP::create</a>(*result->ai_addr);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (ip.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {<
/div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  freeaddrinfo(result);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unsupported family type"</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  freeaddrinfo(result);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> ip.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno">
132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// Returns the names of all the link devices in the system.</span></div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="namespacenet.html#a308dd33768b3b5ce01dc7a5e4fa1f2d1"> 135</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<std::string></a>> <a class="code" href="namespacenet.html#a308dd33768b3b5ce01dc7a5e4fa1f2d1">links</a>()</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">struct </span>ifaddrs* ifaddr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class
="keywordflow">if</span> (getifaddrs(&ifaddr) == -1) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  std::set<std::string> names;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">for</span> (<span class="keyword">struct</span> ifaddrs* ifa = ifaddr; ifa != <span class="keyword">nullptr</span>; ifa = ifa->ifa_next) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span> (ifa->ifa_name != <span class="keyword">nullptr</span>) {</div><div class="line
"><a name="l00145"></a><span class="lineno"> 145</span>  names.insert(ifa->ifa_name);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> names;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447"> 154<
/a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>()</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">char</span> host[512];</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (gethostname(host, <span class="keyword">sizeof</span>(host)) < 0) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="li
ne"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">struct </span>addrinfo hints = <a class="code" href="namespacenet.html#a53ce199fa12dea2d59df0ddfd1f04acd">createAddrInfo</a>(SOCK_STREAM, AF_UNSPEC, AI_CANONNAME);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">struct </span>addrinfo* result = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = getaddrinfo(host, <span class="keyword">nullptr</span>, &hints, &result);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166
</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(gai_strerror(error));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  std::string <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a> = result->ai_canonname;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  freeaddrinfo(result);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</spa
n>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// Returns a `Try` of the result of attempting to set the `hostname`.</span></div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="namespacenet.html#a804670c0d91cb5433d021ede36dfc341"> 179</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacenet.html#a804670c0d91cb5433d021ede36dfc341">setHostname</a>(<span class="keyword">const</span> std::string& <a class="code" href="
namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>)</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span> (sethostname(hostname.c_str(), hostname.size()) != 0) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="line"><a name="l00187"><
/a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#endif // __STOUT_POSIX_NET_HPP__</span></div><div class="ttc" id="namespacenet_html_a804670c0d91cb5433d021ede36dfc341"><div class="ttname"><a href="namespacenet.html#a804670c0d91cb5433d021ede36dfc341">net::setHostname</a></div><div class="ttdeci">Try< Nothing > setHostname(const std::string &hostname)</div><div class="ttdef"><b>Definition:</b> net.hpp:179</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classnet_1_1IP_html_a9b2b8da4b79c15e6632a9305a3d4c7cb"><div class="ttname"><a href="classnet_1_1IP.html#a9b2b8da4b79c15e6632a9305a3d4c7cb">net::IP::in</a></div><div class="ttdeci">Try< struct in_addr > in() const </div><div class="ttdef"><b>Definition:</b> ip.hpp:124</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespacenet_html_a9228d72b9850d1b39d54b5784068fa1f"><div class="ttname"><a href="namespacenet.html#a9228d72b9850d1b39d54b5784068fa1f">net::getHostname</a></div><div class="ttdeci">Try< std::string > getHostname(const IP &ip)</div><div class="ttdef"><b>Definition:</b> net.hpp:45</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_afd80ecbe3170ca4fc85b65cda8659f82"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afd80ecbe3170ca4fc85b65cda8659f82">MAXHOSTNAMELEN</a></div><div class="ttdeci">#define MAXHOSTNAMELEN</div><div class="ttdef"><b>Definition:</b> windows.hpp:162</div></div>
<div class="ttc" id="classnet_1_1IP_html"><div class="ttname"><a href="classnet_1_1IP.html">net::IP</a></div><div class="ttdef"><b>Definition:</b> ip.hpp:73</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
index 8b70104..ec24255 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2protobuf_8hpp_source.html
@@ -59,7 +59,7 @@
<div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="structJSON_1_1Value_html_a32ddf233c0ec159c4d72252529219cf6"><div class="ttname"><a href="structJSON_1_1Value.html#a32ddf233c0ec159c4d72252529219cf6">JSON::Value::as</a></div><div class="ttdeci">const T & as() const </div><div class="ttdef"><b>Definition:</b> json.hpp:340</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a55fad1c3746e1b8a6a00c10998e91d91"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a></div><div class="ttdeci">const mode_t S_IRGRP</div><div class="ttdef"><b>Definition:</b> windows.hpp:313</div></div>
[41/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/credentials_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/credentials_8hpp_source.html b/content/api/latest/c++/credentials_8hpp_source.html
index e34c576..a7cf3b5 100644
--- a/content/api/latest/c++/credentials_8hpp_source.html
+++ b/content/api/latest/c++/credentials_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="credentials_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span
class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distr
ibuted under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __CREDENTIALS_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __CREDENTIALS_HPP__</span></div><div class="line"><a na
me="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2protobuf_8h
pp.html">stout/protobuf.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="permissions_8hpp.html">stout/os/permissions.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">stout/os/read.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos
.html">mesos</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1credentials.html"> 33</a></span> <span class="keyword">namespace </span>credentials {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f"> 35</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Credentials></a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a>(<span class="keyword">const</span> <a class="code" href="classPath.html">Path</a>& <a c
lass="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  LOG(INFO) << <span class="stringliteral">"Loading credentials for authentication from '"</span> << path << <span class="stringliteral">"'"</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a> = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(path.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>());</div><div class="line"><a name="l00040"></a><span class="li
neno"> 40</span>  <span class="keywordflow">if</span> (read.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to read credentials file '"</span> + path.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>() +</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="stringliteral">"': "</span> + read.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (read->empty()) {</div><div class="line"><a name="l00044"></a><span class="
lineno"> 44</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classTry.html">Try<os::Permissions></a> <a class="code" href="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29">permissions</a> = <a class="code" href="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29">os::permissions</a>(path.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (permissions.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00049"></a><span cl
ass="lineno"> 49</span>  LOG(WARNING) << <span class="stringliteral">"Failed to stat credentials file '"</span> << path</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  << <span class="stringliteral">"': "</span> << permissions.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (permissions-><a class="code" href="structos_1_1Permissions.html#ae14ff3a707c064967e132d47a5a116ff">others</a>.<a class="code" href="structos_1_1Permissions.html#a9c1d8046a31c4b107f4548483dfa9c32">rwx</a>) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  LOG(WARNING) << <span class="stringliteral">"Permissions on credentials file '"</span> <&l
t; path</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  << <span class="stringliteral">"' are too open; it is recommended that your"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  << <span class="stringliteral">" credentials file is NOT accessible by others"</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// TODO(nfnt): Remove text format support at the end of the deprecation cycle</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// which started with version 1.0.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59
</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = JSON::parse<JSON::Object>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (!json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classTry.html">Try<Credentials></a> credentials = ::protobuf::parse<Credentials>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> (!credentials.<a class="code" href="classTry.html#a0b98f95163b8a38da
afd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> credentials.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  Credentials credentials;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& line, <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(
), <span class="stringliteral">"\n"</span>)) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">const</span> std::vector<std::string>& <a class="code" href="namespacestrings.html#adaaf307e99ca9a9e434c43d7fda7d298">pairs</a> = <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(line, <span class="stringliteral">" "</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (pairs.size() != 2) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Invalid credential format at line "</span> +</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href
="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(credentials.credentials().size() + 1));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Add the credential.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Credential* credential = credentials.add_credentials();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  credential->set_principal(pairs[0]);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  credential->set_secret(pairs[1]);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class
="keywordflow">return</span> credentials;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1credentials.html#a69e23d6d4e7b9d1c64671c28915a3ab3"> 84</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Credential></a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a69e23d6d4e7b9d1c64671c28915a3ab3">readCredential</a>(<span class="keyword">const</span> <a class="code" href="classPath.html">Path</a>& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="li
neno"> 86</span>  LOG(INFO) << <span class="stringliteral">"Loading credential for authentication from '"</span> << path << <span class="stringliteral">"'"</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a> = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(path.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (read.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l0009
0"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to read credential file '"</span> + path.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>() +</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="stringliteral">"': "</span> + read.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (read->empty()) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</s
pan>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classTry.html">Try<os::Permissions></a> <a class="code" href="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29">permissions</a> = <a class="code" href="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29">os::permissions</a>(path.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (permissions.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  LOG(WARNING) << <span class="stringliteral">"Failed to stat credential file '"</span> << path</div><div class="line"><a name="l00099"
></a><span class="lineno"> 99</span>  << <span class="stringliteral">"': "</span> << permissions.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (permissions-><a class="code" href="structos_1_1Permissions.html#ae14ff3a707c064967e132d47a5a116ff">others</a>.<a class="code" href="structos_1_1Permissions.html#a9c1d8046a31c4b107f4548483dfa9c32">rwx</a>) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  LOG(WARNING) << <span class="stringliteral">"Permissions on credential file '"</span> << path</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  << <span class="stringliteral">"' are too open; it is recommended that yo
ur"</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  << <span class="stringliteral">" credential file is NOT accessible by others"</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = JSON::parse<JSON::Object>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span> (!json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"
><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classTry.html">Try<Credential></a> credential = ::protobuf::parse<Credential>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (!credential.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> credential.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a
name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// TODO(nfnt): Remove text format support at the end of the deprecation cycle</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// which started with version 1.0.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  Credential credential;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">const</span> std::vector<std::string>& line = <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span> (line.size() != 1) {</div><div class="line"><a nam
e="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Expecting only one credential"</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> std::vector<std::string>& <a class="code" href="namespacestrings.html#adaaf307e99ca9a9e434c43d7fda7d298">pairs</a> = <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(line[0], <span class="stringliteral">" "</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span> (pairs.size() != 2) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a cla
ss="code" href="classError.html">Error</a>(<span class="stringliteral">"Invalid credential format"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Add the credential.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  credential.set_principal(pairs[0]);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  credential.set_secret(pairs[1]);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> credential;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> } <span class="comment">//
namespace credentials {</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#endif // __CREDENTIALS_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2os_2read_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">read.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/duration_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/duration_8hpp_source.html b/content/api/latest/c++/duration_8hpp_source.html
index 1022937..88f9074 100644
--- a/content/api/latest/c++/duration_8hpp_source.html
+++ b/content/api/latest/c++/duration_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="namespacesvn_html_af97eefc14cbcf6f81e217c6a9215cea9"><div class="ttname"><a href="namespacesvn.html#af97eefc14cbcf6f81e217c6a9215cea9">svn::diff</a></div><div class="ttdeci">Try< Diff > diff(const std::string &from, const std::string &to)</div><div class="ttdef"><b>Definition:</b> svn.hpp:72</div></div>
<div class="ttc" id="classMicroseconds_html_abe8aa0a5b2cf4ed2740baac28d723a87"><div class="ttname"><a href="classMicroseconds.html#abe8aa0a5b2cf4ed2740baac28d723a87">Microseconds::units</a></div><div class="ttdeci">static std::string units()</div><div class="ttdef"><b>Definition:</b> duration.hpp:189</div></div>
<div class="ttc" id="classMilliseconds_html_a958cbe56379726b0b0e1a01afd3204e7"><div class="ttname"><a href="classMilliseconds.html#a958cbe56379726b0b0e1a01afd3204e7">Milliseconds::value</a></div><div class="ttdeci">double value() const </div><div class="ttdef"><b>Definition:</b> duration.hpp:201</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classDuration_html_ad2877fca0bfcc4909706cf128273b3aa"><div class="ttname"><a href="classDuration.html#ad2877fca0bfcc4909706cf128273b3aa">Duration::MICROSECONDS</a></div><div class="ttdeci">static constexpr int64_t MICROSECONDS</div><div class="ttdef"><b>Definition:</b> duration.hpp:140</div></div>
<div class="ttc" id="classNanoseconds_html_a260729fd78d4e539dc1b694d8e2fd06b"><div class="ttname"><a href="classNanoseconds.html#a260729fd78d4e539dc1b694d8e2fd06b">Nanoseconds::value</a></div><div class="ttdeci">double value() const </div><div class="ttdef"><b>Definition:</b> duration.hpp:173</div></div>
<div class="ttc" id="classDuration_html_a423d88c5efbc1eeefa9b88d4ccd464cc"><div class="ttname"><a href="classDuration.html#a423d88c5efbc1eeefa9b88d4ccd464cc">Duration::operator-=</a></div><div class="ttdeci">Duration & operator-=(const Duration &that)</div><div class="ttdef"><b>Definition:</b> duration.hpp:80</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/elf_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/elf_8hpp_source.html b/content/api/latest/c++/elf_8hpp_source.html
index 777497b..afa1cbb 100644
--- a/content/api/latest/c++/elf_8hpp_source.html
+++ b/content/api/latest/c++/elf_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="elf_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span class="
lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distributed u
nder the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_ELF_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_ELF_HPP__</span></div><div class="line"><a name="l00019">
</a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <elfio/elfio.hpp></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"
><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l0
0032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2version_8hpp.html">stout/version.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespaceelf.html"> 36</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceelf.html">elf</a> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a nam
e="l00038"></a><span class="lineno"><a class="line" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780"> 38</a></span> <span class="keyword">enum</span> <a class="code" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780">Class</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780a1c75020169df4035921f27a49554c7ad"> 40</a></span>  <a class="code" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780a1c75020169df4035921f27a49554c7ad">CLASSNONE</a> = ELFCLASSNONE,</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780a0d9456683e6229e4d1518600e965a045"> 41</a></span>  <a class="code" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780a0d9456683e6229e4d1518600e965a045">CLASS32</a> = ELFCLA
SS32,</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780a1663a23b1c391e18abe476ddb70775b8"> 42</a></span>  <a class="code" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780a1663a23b1c391e18abe476ddb70775b8">CLASS64</a> = ELFCLASS64,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022"> 45</a></span> <span class="keyword">enum class</span> <a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022">SectionType</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="names
paceelf.html#a5e0f37b29d2d9500fe43653adefc1022a0fcc90da4811c877ba9f9c12f7d60bc9">DYNAMIC</a> = SHT_DYNAMIC,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022a10de4bc81f754b19b0d27246a0589c05">NOTE</a> = SHT_NOTE,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022ac94c37334a8660ad8e5c05176a2b3853">PROGBITS</a> = SHT_PROGBITS,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespaceelf.html#a23590b8dd2b9118865267be8a969a1f2"> 52</a></span> <span class="keyword">enum class</span> <a class="code" href="namespaceelf.html#a23590b8dd2b9118865267be8a969a1f2">Dynami
cTag</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="namespaceelf.html#a23590b8dd2b9118865267be8a969a1f2a7405fdd3e32358fa75c508f6e4fcdf9e">STRTAB</a> = DT_STRTAB,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="namespaceelf.html#a23590b8dd2b9118865267be8a969a1f2a3f14fcab6cab30f5916f66f4b2273a50">SONAME</a> = DT_SONAME,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="namespaceelf.html#a23590b8dd2b9118865267be8a969a1f2a1a8c9470d962d8e444f0deff3bcea769">NEEDED</a> = DT_NEEDED,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> 
;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// This class is used to represent the contents of a standard ELF</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// binary. The current implementation is incomplete.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">//</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// NOTE: We use ELFIO under the hood to do our elf parsing for us.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// Unfortunately, ELFIO reads the *entire* elf file into memory when</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// it is first loaded instead of relying on something like `mmap` to</sp
an></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// only page in the parts of the file we are interested in. If this</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// becomes a problem, we will have to use something like `libelf`</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// instead (but note that libelf is not header-only and will</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// therefore introduce a runtime library dependency).</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="clasself_1_1File.html"> 70</a></span> <span class="keyword">class </span><a class="code" href="clasself_1_1File.html">File</a></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</spa
n> {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// TODO(klueska): Return a unique_ptr here.</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="clasself_1_1File.html#a6566b238508d4407604370e1db96d16a"> 74</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<File*></a> <a class="code" href="clasself_1_1File.html#a6566b238508d4407604370e1db96d16a">load</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="clasself_1_1File.html">File</a>* <a class="code" href="name
spacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a> = <span class="keyword">new</span> <a class="code" href="clasself_1_1File.html">File</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span> (!file->elf.load(path)) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">delete</span> <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unknown error during elfio::load"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l0
0082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// Create the mapping from section type to sections.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">foreach</span> (ELFIO::section* section, file->elf.sections) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022">SectionType</a> section_type = <a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022">SectionType</a>(section->get_type());</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  file->sections_by_type[section_type].push_back(section);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span
class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// Returns the ELF class of an ELF file (CLASS32, or CLASS64).</span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="clasself_1_1File.html#abaa808bc07fd13b783072de3e6f9e9de"> 93</a></span>  <a class="code" href="classTry.html">Try<Class></a> <a class="code" href="clasself_1_1File.html#abaa808bc07fd13b783072de3e6f9e9de">get_class</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00094
"></a><span class="lineno"> 94</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780">Class</a> c = <a class="code" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780">Class</a>(<a class="code" href="namespaceelf.html">elf</a>.get_class());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (c == <a class="code" href="namespaceelf.html#aa0e1bb44f5a1cfea955819e32ebaa780a1c75020169df4035921f27a49554c7ad">CLASSNONE</a>) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unknown error"</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div c
lass="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Extract the strings associated with the provided</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// `DynamicTag` from all DYNAMIC sections in the ELF binary.</span></div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="clasself_1_1File.html#ab645b3ba5b49f6ecaca92d984b69655f"> 105</a></span>  <a class="code" href="classTry.html">Try<std::vector<std::string></a>> <a class="code" href="clasself_
1_1File.html#ab645b3ba5b49f6ecaca92d984b69655f">get_dynamic_strings</a>(<a class="code" href="namespaceelf.html#a23590b8dd2b9118865267be8a969a1f2">DynamicTag</a> tag)<span class="keyword"> const</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span> (sections_by_type.count(<a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022a0fcc90da4811c877ba9f9c12f7d60bc9">SectionType::DYNAMIC</a>) == 0) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"No DYNAMIC sections found"</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><spa
n class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  std::vector<std::string> <a class="code" href="namespacestrings.html">strings</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">foreach</span> (ELFIO::section* section,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  sections_by_type.at(<a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022a0fcc90da4811c877ba9f9c12f7d60bc9">SectionType::DYNAMIC</a>)) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">auto</span> accessor = ELFIO::dynamic_section_accessor(<a class="code" href="namespaceelf.html">elf</a>, section);</div><div class="line"><a name="l00116"></a><span class="lineno"> 1
16</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">for</span> (ELFIO::Elf_Xword i = 0; i < accessor.get_entries_num(); ++i) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  ELFIO::Elf_Xword entry_tag;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  ELFIO::Elf_Xword entry_value;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  std::string entry_string;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span> (!accessor.get_entry(i, entry_tag, entry_value, entry_string)) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="
classError.html">Error</a>(<span class="stringliteral">"Failed to get entry from DYNAMIC section"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span> (tag == <a class="code" href="namespaceelf.html#a23590b8dd2b9118865267be8a969a1f2">DynamicTag</a>(entry_tag)) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  strings.push_back(entry_string);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno">
131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> strings;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// Get the ABI version of the ELF file by parsing the contents of</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// the `.note.ABI-tag` section. This section is Linux specific and</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// adheres to the format described in the links below.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">//</span></div><div class="line"><
a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// NOTE: Not all ELF files have a `.note.ABI-tag` section (even on</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// Linux), so we return a `Result` to allow the return value to be</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// `None()`.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">//</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/noteabitag.html</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// http://flint.cs.yale.edu/cs422/doc/ELF_Format.pdf</span></div><div class="line"><a name="l00145"></a><span class="lineno
"><a class="line" href="clasself_1_1File.html#a4a5519faef535cb8210383ea5efc4ff5"> 145</a></span>  <a class="code" href="classResult.html">Result<Version></a> <a class="code" href="clasself_1_1File.html#a4a5519faef535cb8210383ea5efc4ff5">get_abi_version</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  ELFIO::section* section = <a class="code" href="namespaceelf.html">elf</a>.sections[<span class="stringliteral">".note.ABI-tag"</span>];</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span> (section == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>
0; <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022">SectionType</a>(section->get_type()) != <a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022a10de4bc81f754b19b0d27246a0589c05">SectionType::NOTE</a>) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Section '.note.ABI-tag' is not a NOTE section"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 15
5</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">auto</span> accessor = ELFIO::note_section_accessor(<a class="code" href="namespaceelf.html">elf</a>, section);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span> (accessor.get_notes_num() != 1) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Section '.note.ABI-tag' does not have exactly one entry"</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span c
lass="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  ELFIO::Elf_Word <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  std::string <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">void</span>* descriptor;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  ELFIO::Elf_Word descriptor_size;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (!accessor.get_note(0, type, name, descriptor, descriptor_size)) {</div><div class="line"><a name="
l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to get entry from '.note.ABI-tag' section"</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// The note in a `.note.ABI-tag` section must have `type == 1`.</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span> (type != 1) {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Corrupt tag type '"</span> + <a cl
ass="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(type) + <span class="stringliteral">"' from"</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="stringliteral">" entry in '.note.ABI-tag' section"</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// Linux mandates `name == GNU`.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (name != <span class="stringliteral">"GNU"</span>) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> <a class="code" hr
ef="classError.html">Error</a>(<span class="stringliteral">"Corrupt label '"</span> + name + <span class="stringliteral">"' from"</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="stringliteral">" entry in '.note.ABI-tag' section"</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// The version array consists of 4 32-bit numbers, with the</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// first number fixed at 0 (meaning it is a Linux ELF file), and</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">
// the rest specifying the ABI version. For example, if the array</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// contains {0, 2, 3, 99}, this signifies a Linux ELF file</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// with an ABI version of 2.3.99.</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  std::vector<uint32_t> <a class="code" href="namespaceperf.html#a240601d1c5090f329a23755094e5b089">version</a>(</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  (uint32_t*)descriptor,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  (uint32_t*)((<span class="keywordtype">char</span>*)descriptor + descriptor_size));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"
><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span> (version.size() != 4 || version[0] != 0) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Corrupt version '"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(version) + <span class="stringliteral">"'"</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="stringliteral">" from entry in '.note.ABI-tag' section"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>
0; <span class="keywordflow">return</span> <a class="code" href="structVersion.html">Version</a>(version[1], version[2], version[3]);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// Return the contents of the .interp section, if such a</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// section exits. For Linux ELF executables, the .interp</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// section contains the path to the program loader.</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">//</span></div><div class="line"><a name="l00205"></a><span class="lineno"
> 205</span>  <span class="comment">// https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB/specialsections.html</span></div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="clasself_1_1File.html#a2a4f93c734087be5acbd3788dd276f78"> 206</a></span>  <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="clasself_1_1File.html#a2a4f93c734087be5acbd3788dd276f78">get_interpreter</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  ELFIO::section* section = <a class="code" href="namespaceelf.html">elf</a>.sections[<span class="stringliteral">".interp"</span>];</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 21
0</span>  <span class="keywordflow">if</span> (section == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022">SectionType</a>(section->get_type()) != <a class="code" href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022ac94c37334a8660ad8e5c05176a2b3853">SectionType::PROGBITS</a>) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">return</span> <a class="code" href="classErr
or.html">Error</a>(<span class="stringliteral">"Section '.interp' is not a PROGBITS section"</span>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> std::string(section->get_data(), section->get_size());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">explicit</span> <a class="code" href="clasself_1_1File.html">File</a>() {}</div><div class="line"><a name="l00223"></
a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  ELFIO::elfio <a class="code" href="namespaceelf.html">elf</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  std::map<SectionType, std::vector<ELFIO::section*>> sections_by_type;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> };</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> } <span class="comment">// namespace elf {</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif // __STOUT_ELF_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div
><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceelf_html_a5e0f37b29d2d9500fe43653adefc1022a0fcc90da4811c877ba9f9c12f7d60bc9"><div class="ttname"><a href="namespaceelf.html#a5e0f37b29d2d9500fe43653adefc1022a0fcc90da4811c877ba9f9c12f7d60bc9">elf::SectionType::DYNAMIC</a></div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceelf_html"><div class="ttname"><a href="namespaceelf.html">elf</a></div><div class="ttdef"><b>Definition:</b> elf.hpp:36</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/error_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/error_8hpp_source.html b/content/api/latest/c++/error_8hpp_source.html
index a20b74d..caec16f 100644
--- a/content/api/latest/c++/error_8hpp_source.html
+++ b/content/api/latest/c++/error_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="error_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_ERROR_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_ERROR_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// NOTE: The order of these `#include`s is important. This file is structured</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// as a series of `#include`s for historical reasons. Before, `stout/error`</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// simply contained the definitions of `Error` and `ErrnoError`. The addition</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>
 <span class="comment">// of Windows required the addition of `WindowsError`. But, we try to avoid</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// `#ifdef`'ing code, opting instead to `#ifdef` `#include` statements. Hence,</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// we simply move the `error.hpp` code to `errorbase.hpp` and include the</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// Windows error code below it.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="errorbase_8hpp.html">stout/errorbase.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span
> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="windows_2error_8hpp.html">stout/windows/error.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">using</span> <a class="code" href="classErrnoError.html">SocketError</a> =</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="classWindowsSocketError.html">WindowsSocketError</a>;</div><div class="line"><a n
ame="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="error_8hpp.html#a176f6fc34ea37d40201853a52a475762"> 33</a></span>  <a class="code" href="classErrnoError.html">ErrnoError</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif // __STOUT_ERROR_HPP__</span></div><div class="ttc" id="classWindowsSocketError_html"><div class="ttname"><a href="classWindowsSocketError.html">WindowsSocketError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:120</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="errorbase_8hpp_html"><div class="ttname"><a href="errorbase_8hpp.html">errorbase.hpp</a></div></div>
<div class="ttc" id="windows_2error_8hpp_html"><div class="ttname"><a href="windows_2error_8hpp.html">error.hpp</a></div></div>
</div><!-- fragment --></div><!-- contents -->
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/errorbase_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/errorbase_8hpp.html b/content/api/latest/c++/errorbase_8hpp.html
index 4d1343b..7dc6f88 100644
--- a/content/api/latest/c++/errorbase_8hpp.html
+++ b/content/api/latest/c++/errorbase_8hpp.html
@@ -49,12 +49,14 @@
</div><!-- top -->
<div class="header">
<div class="summary">
-<a href="#nested-classes">Classes</a> </div>
+<a href="#nested-classes">Classes</a> |
+<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">errorbase.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include <errno.h></code><br />
+<code>#include <ostream></code><br />
<code>#include <string></code><br />
<code>#include <<a class="el" href="strerror_8hpp_source.html">stout/os/strerror.hpp</a>></code><br />
</div>
@@ -66,7 +68,47 @@ Classes</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classErrnoError.html">ErrnoError</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ae45822aef5901508793415fff642bef0"><td class="memItemLeft" align="right" valign="top">std::ostream & </td><td class="memItemRight" valign="bottom"><a class="el" href="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0">operator<<</a> (std::ostream &stream, const <a class="el" href="classError.html">Error</a> &error)</td></tr>
+<tr class="separator:ae45822aef5901508793415fff642bef0"><td class="memSeparator" colspan="2"> </td></tr>
</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="ae45822aef5901508793415fff642bef0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream& operator<< </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream & </td>
+ <td class="paramname"><em>stream</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classError.html">Error</a> & </td>
+ <td class="paramname"><em>error</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
[06/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/uuid_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/uuid_8hpp_source.html b/content/api/latest/c++/uuid_8hpp_source.html
index 4f812a7..3a94895 100644
--- a/content/api/latest/c++/uuid_8hpp_source.html
+++ b/content/api/latest/c++/uuid_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="uuid_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></
div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line">
<a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_UUID_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_UUID_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <assert.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <stdexcept></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span cl
ass="lineno"> 21</span> <span class="preprocessor">#include <boost/uuid/random_generator.hpp></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <boost/uuid/string_generator.hpp></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <boost/uuid/uuid.hpp></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <boost/uuid/uuid_io.hpp></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a cla
ss="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespaceid.html"> 33</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceid.html">id</a> {</div><div class="line"><a name="l00034"></a><span
class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structid_1_1UUID.html"> 35</a></span> <span class="keyword">struct </span><a class="code" href="structid_1_1UUID.html">UUID</a> : boost::uuids::uuid</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="structid_1_1UUID.html#a6d8296fba33c5d84a64e4a882fcdc280"> 38</a></span>  <span class="keyword">static</span> <a class="code" href="structid_1_1UUID.html">UUID</a> <a class="code" href="structid_1_1UUID.html#a6d8296fba33c5d84a64e4a882fcdc280">random</a>()</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>
  <span class="keyword">static</span> thread_local boost::uuids::random_generator* generator = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span> (generator == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  generator = <span class="keyword">new</span> boost::uuids::random_generator();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="structid_1_1UUID.html">UUID</a>((*generator)());</div><div class="line"><a name="l00047"></a><span class=
"lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74"> 49</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<UUID></a> <a class="code" href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74">fromBytes</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <span class="stringliteral">"Not a valid UUID"</span>;</div><div class="line"><a name="l00052"></a><span class="linen
o"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (s.size() != UUID::static_size()) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(error);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  boost::uuids::uuid uuid;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  memcpy(&uuid, s.data(), s.size());</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (uuid.versio
n() == UUID::version_unknown) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(error);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> <a class="code" href="structid_1_1UUID.html">UUID</a>(uuid);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structid_1_1UUID.html#a51931642cf2febf1689357b40b376798"> 67</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<
;UUID></a> <a class="code" href="structid_1_1UUID.html#a51931642cf2febf1689357b40b376798">fromString</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">try</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// NOTE: We don't use `thread_local` for the `string_generator`</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// (unlike for the `random_generator` above), because it is cheap</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// to construct one each time.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  boost::uuids:
:string_generator gen;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  boost::uuids::uuid uuid = gen(s);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="structid_1_1UUID.html">UUID</a>(uuid);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  } <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::runtime_error& e) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(e.what());</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="li
ne"><a name="l00081"></a><span class="lineno"><a class="line" href="structid_1_1UUID.html#a53db0f50b26782f7a2dd77ab00f002f9"> 81</a></span>  std::string <a class="code" href="structid_1_1UUID.html#a53db0f50b26782f7a2dd77ab00f002f9">toBytes</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  assert(<span class="keyword">sizeof</span>(data) == <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>());</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> std::string(reinterpret_cast<const char*>(data), <span class="keyword">sizeof</span>(data));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><
span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="structid_1_1UUID.html#af024badbc379374ac635031eed57dc5f"> 87</a></span>  std::string <a class="code" href="structid_1_1UUID.html#af024badbc379374ac635031eed57dc5f">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> to_string(*<span class="keyword">this</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00093"></a><span class="lineno">
93</span>  <span class="keyword">explicit</span> <a class="code" href="structid_1_1UUID.html">UUID</a>(<span class="keyword">const</span> boost::uuids::uuid& uuid)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  : boost::uuids::uuid(uuid) {}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> };</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> } <span class="comment">// namespace id {</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="linen
o"> 101</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01id_1_1UUID_01_4.html"> 102</a></span> <span class="keyword">struct </span>hash<<a class="code" href="namespaceid.html">id</a>::UUID></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> {</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01id_1_1UUID_01_4.html#a3ccd597c2935ef079f19e4ad21e196b0"> 104</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01id_1_1UUID_01_4.html#a3ccd597c2935ef079f19e4ad21e196b0">result_type</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01id_1_1UUID_01_
4.html#a8d9f2dc715204de843e5bcb524f700a5"> 106</a></span>  <span class="keyword">typedef</span> <a class="code" href="structid_1_1UUID.html">id::UUID</a> <a class="code" href="structstd_1_1hash_3_01id_1_1UUID_01_4.html#a8d9f2dc715204de843e5bcb524f700a5">argument_type</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01id_1_1UUID_01_4.html#a4969303cf710139eab75635d7a3aefd2"> 108</a></span>  result_type <a class="code" href="structstd_1_1hash_3_01id_1_1UUID_01_4.html#a4969303cf710139eab75635d7a3aefd2">operator()</a>(<span class="keyword">const</span> argument_type& uuid)<span class="keyword"> const</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywor
dflow">return</span> boost::uuids::hash_value(uuid);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> };</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> } <span class="comment">// namespace std {</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor">#endif // __STOUT_UUID_HPP__</span></div><div class="ttc" id="structid_1_1UUID_html_a53db0f50b26782f7a2dd77ab00f002f9"><div class="ttname"><a href="structid_1_1UUID.html#a53db0f50b26782f7a2dd77ab00f002f9">id::UUID::toBytes</a></div><div class="ttdeci">std::string toBytes() const </div><div class="ttdef"><b>Definition:</b> uuid.hpp:81</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="structstd_1_1hash_3_01id_1_1UUID_01_4_html_a8d9f2dc715204de843e5bcb524f700a5"><div class="ttname"><a href="structstd_1_1hash_3_01id_1_1UUID_01_4.html#a8d9f2dc715204de843e5bcb524f700a5">std::hash< id::UUID >::argument_type</a></div><div class="ttdeci">id::UUID argument_type</div><div class="ttdef"><b>Definition:</b> uuid.hpp:106</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/v1_2resources_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/v1_2resources_8hpp_source.html b/content/api/latest/c++/v1_2resources_8hpp_source.html
index b8f4416..309679a 100644
--- a/content/api/latest/c++/v1_2resources_8hpp_source.html
+++ b/content/api/latest/c++/v1_2resources_8hpp_source.html
@@ -57,7 +57,7 @@
<div class="ttc" id="classmesos_1_1v1_1_1Resources_html_a88bae7db4074589b0afcb756988be4f3"><div class="ttname"><a href="classmesos_1_1v1_1_1Resources.html#a88bae7db4074589b0afcb756988be4f3">mesos::v1::Resources::reserved</a></div><div class="ttdeci">Resources reserved(const Option< std::string > &role=None()) const </div></div>
<div class="ttc" id="classmesos_1_1v1_1_1Resources_html_a67c9b3a515ef7ca50599151b7039ff5f"><div class="ttname"><a href="classmesos_1_1v1_1_1Resources.html#a67c9b3a515ef7ca50599151b7039ff5f">mesos::v1::Resources::operator=</a></div><div class="ttdeci">Resources & operator=(const Resources &that)</div><div class="ttdef"><b>Definition:</b> resources.hpp:380</div></div>
<div class="ttc" id="classmesos_1_1v1_1_1Resources_html_aa1501df2cd47829fcebb26410f38fa6e"><div class="ttname"><a href="classmesos_1_1v1_1_1Resources.html#aa1501df2cd47829fcebb26410f38fa6e">mesos::v1::Resources::validate</a></div><div class="ttdeci">static Option< Error > validate(const Resource &resource)</div><div class="ttdoc">Validates a Resource object. </div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="classmesos_1_1v1_1_1Resources_html_ad49e676c9316fb456bf65516acb7c12d"><div class="ttname"><a href="classmesos_1_1v1_1_1Resources.html#ad49e676c9316fb456bf65516acb7c12d">mesos::v1::Resources::unreserved</a></div><div class="ttdeci">Resources unreserved() const </div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2copyfile_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2copyfile_8hpp_source.html b/content/api/latest/c++/windows_2copyfile_8hpp_source.html
index e395dc7..6c5f92c 100644
--- a/content/api/latest/c++/windows_2copyfile_8hpp_source.html
+++ b/content/api/latest/c++/windows_2copyfile_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="windows_2copyfile_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment
">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div
class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_WINDOWS_COPYFILE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_WINDOWS_COPYFILE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>&g
t;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>
 </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Uses the `CopyFile` Windows API to perform a file copy.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Unlike the POSIX implementation, we do not need to check if the</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// source or destination are directories, because `CopyFile` only</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// works on files.
</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// https://msdn.microsoft.com/en-us/library/windows/desktop/aa363851(v=vs.85).aspx</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">//</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// NOLINT(whitespace/line_length)</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a707a0147851cfc89e4421a07dd5f17a3">copyfile</a>(</div><div class="line"><a name="l00039"></a><span class="lineno">
39</span>  <span class="keyword">const</span> std::string& source, <span class="keyword">const</span> std::string& destination)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacepath.html#a09c4941618b3a4ea2dbfccf5fe9d3687">path::absolute</a>(source)) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`source` was a relative path"</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if
</span> (!<a class="code" href="namespacepath.html#a09c4941618b3a4ea2dbfccf5fe9d3687">path::absolute</a>(destination)) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`destination` was a relative path"</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (!::CopyFileW(</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  ::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(source).data(),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span
>  ::<a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(destination).data(),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// NOTE: This allows the destination to be overwritten if the</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// destination already exists, as is the case in the POSIX version of</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// `copyfile`.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">false</span>)) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>
();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#endif // __STOUT_OS_WINDOWS_COPYFILE_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html"
>Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_html_a707a0147851cfc89e4421a07dd5f17a3"><div class="ttname"><a href="namespaceos.html#a707a0147851cfc89e4421a07dd5f17a3">os::copyfile</a></div><div class="ttdeci">Try< Nothing > copyfile(const std::string &source, const std::string &destination)</div><div class="ttdef"><b>Definition:</b> copyfile.hpp:39</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:106</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/windows_2dynamiclibrary_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/windows_2dynamiclibrary_8hpp_source.html b/content/api/latest/c++/windows_2dynamiclibrary_8hpp_source.html
index a02d3d4..3f85984 100644
--- a/content/api/latest/c++/windows_2dynamiclibrary_8hpp_source.html
+++ b/content/api/latest/c++/windows_2dynamiclibrary_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="windows_2dynamiclibrary_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="c
omment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div
><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_DYNAMICLIBRARY_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_WINDOWS_DYNAMICLIBRARY_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothi
ng.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="classDynamicLibrary.html">DynamicLibrary</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l000
30"></a><span class="lineno"> 30</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494"> 31</a></span>  <a class="code" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494">DynamicLibrary</a>() : handle_(nullptr) { }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// Since this class manages a naked handle it cannot be copy- or</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// move-constructed.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// TODO(bbannier): Allow for move-construction.</span></div><div class="line"><a name="l00036"></a><span class=
"lineno"> 36</span>  <a class="code" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494">DynamicLibrary</a>(<span class="keyword">const</span> <a class="code" href="classDynamicLibrary.html">DynamicLibrary</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494">DynamicLibrary</a>(<a class="code" href="classDynamicLibrary.html">DynamicLibrary</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a42c1fe0f7a71004c823df00a9526c616"> 39</a></span>  <span class="keyword">virtual</span> <a class="code" href="classDynamicLibrary.html#a42c1fe0f7a71004c823df00a9526c616">~DynamicLibrary</a>()</div><div class="line
"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span> (handle_ != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="classDynamicLibrary.html#a4c65d79591c7fb3173916dec0a1ddd8e">close</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a8c86c304bbcce3680ecea2b4115fb09a"> 46</a></span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classDynamicLibrary.html#a8c86c304bbcce3680ecea2b4115fb09a"
>open</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// Check if we've already opened a library.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (handle_ != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Library already opened"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l0
0053"></a><span class="lineno"> 53</span>  handle_ = ::LoadLibraryW(wide_stringify(path).data());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span> (handle_ == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Could not load library '"</span> + path + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  path_ = path;</div><div class="line"><
a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a4c65d79591c7fb3173916dec0a1ddd8e"> 64</a></span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classDynamicLibrary.html#a4c65d79591c7fb3173916dec0a1ddd8e">close</a>()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (handle_ == <span class="keyword">nullptr</span
>) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Could not close library; handle was already `nullptr`"</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (!::FreeLibrary(handle_)) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="stringliteral">"Could not close library '"</span> + (path_.<a class="code"
href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() ? path_.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() : <span class="stringliteral">""</span>));</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  handle_ = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  path_ = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00079"></a><span class="l
ineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a0ab4cac9af777fb64c70863534f1c64a"> 81</a></span>  <a class="code" href="classTry.html">Try<void*></a> <a class="code" href="classDynamicLibrary.html#a0ab4cac9af777fb64c70863534f1c64a">loadSymbol</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (handle_ == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="
classError.html">Error</a>(</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="stringliteral">"Could not get symbol '"</span> + name + <span class="stringliteral">"'; library handle was `nullptr`"</span>);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span>* symbol = ::GetProcAddress(handle_, name.c_str());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span> (symbol == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class=
"keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="stringliteral">"Error looking up symbol '"</span> + name + <span class="stringliteral">"' in '"</span> +</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  (path_.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() ? path_.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() : <span class="stringliteral">""</span>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> symbol;</div><div class="line"
><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  HMODULE handle_;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classOption.html">Option<std::string></a> path_;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#endif // __STOUT_WINDOWS_DYNAMICLIBRARY_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><
b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="classDynamicLibrary_html_a8c86c304bbcce3680ecea2b4115fb09a"><div class="ttname"><a href="classDynamicLibrary.html#a8c86c304bbcce3680ecea2b4115fb09a">DynamicLibrary::open</a></div><div class="ttdeci">Try< Nothing > open(const std::string &path)</div><div class="ttdef"><b>Definition:</b> dynamiclibrary.hpp:46</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classWindowsError_html"><div class="ttname"><a href="classWindowsError.html">WindowsError</a></div><div class="ttdef"><b>Definition:</b> error.hpp:106</div></div>
[14/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/status__update__manager__process_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/status__update__manager__process_8hpp_source.html b/content/api/latest/c++/status__update__manager__process_8hpp_source.html
index a89d211..7dac31d 100644
--- a/content/api/latest/c++/status__update__manager__process_8hpp_source.html
+++ b/content/api/latest/c++/status__update__manager__process_8hpp_source.html
@@ -62,7 +62,7 @@
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classmesos_1_1internal_1_1StatusUpdateManagerProcess_html_ab8a393d0453cc8174d71dad6f1e45d6f"><div class="ttname"><a href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ab8a393d0453cc8174d71dad6f1e45d6f">mesos::internal::StatusUpdateManagerProcess::recover</a></div><div class="ttdeci">process::Future< State > recover(const std::list< IDType > &streamIds, bool strict)</div><div class="ttdef"><b>Definition:</b> status_update_manager_process.hpp:310</div></div>
<div class="ttc" id="classmesos_1_1internal_1_1StatusUpdateManagerProcess_html_a681eb7df0ad9abc702b1dfa6e4a222cb"><div class="ttname"><a href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">mesos::internal::StatusUpdateManagerProcess::StatusUpdateManagerProcess</a></div><div class="ttdeci">StatusUpdateManagerProcess(const std::string &id, const std::string &_statusUpdateType)</div><div class="ttdef"><b>Definition:</b> status_update_manager_process.hpp:113</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< FrameworkID ></a></div></div>
<div class="ttc" id="namespaceos_html_ac1c8ce3595084d78291f98c2be9f62ba"><div class="ttname"><a href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a></div><div class="ttdeci">Try< Nothing > rm(const std::string &path)</div><div class="ttdef"><b>Definition:</b> rm.hpp:26</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a55fad1c3746e1b8a6a00c10998e91d91"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a></div><div class="ttdeci">const mode_t S_IRGRP</div><div class="ttdef"><b>Definition:</b> windows.hpp:313</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/stout_2include_2stout_2check_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/stout_2include_2stout_2check_8hpp_source.html b/content/api/latest/c++/stout_2include_2stout_2check_8hpp_source.html
index f4c9650..148c1d9 100644
--- a/content/api/latest/c++/stout_2include_2stout_2check_8hpp_source.html
+++ b/content/api/latest/c++/stout_2include_2stout_2check_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="stout_2include_2stout_2check_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span cla
ss="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> 
</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_CHECK_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_CHECK_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <ostream></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#in
clude <glog/logging.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preproces
sor">#include <<a class="code" href="some_8hpp.html">stout/some.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classResult.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="classResult.html">Result</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E></div><div class="line"><a name="l00033"></a><span class="lineno"><
a class="line" href="classTry.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="classTry.html">Try</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// A generic macro to facilitate definitions of CHECK_*, akin to CHECK.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// This appends the error if possible to the end of the log message,</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// so there's no need to append the error message explicitly.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// To define a new CHECK_*, provide the na
me, the function that performs the</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// check, and the expression. See below for examples (e.g. CHECK_SOME).</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a3a516e0b5cf1a5447ce430ab586393e1"> 41</a></span> <span class="preprocessor">#define CHECK_STATE(name, check, expression) \</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> for (const Option<Error> _error = check(expression); _error.isSome();) \</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"> _CheckFatal(__FILE__, \</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span
class="preprocessor"> __LINE__, \</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor"> #name, \</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor"> #expression, \</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"> _error.get()).stream()</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265"> 50</a></span> <sp
an class="preprocessor">#define CHECK_SOME(expression) \</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor"> CHECK_STATE(CHECK_SOME, _check_some, expression)</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e"> 54</a></span> <span class="preprocessor">#define CHECK_NONE(expression) \</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor"> CHECK_STATE(CHECK_NONE, _check_none, expression)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div c
lass="line"><a name="l00058"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a7d338bde94559d47319226f4ccbc0bda"> 58</a></span> <span class="preprocessor">#define CHECK_ERROR(expression) \</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor"> CHECK_STATE(CHECK_ERROR, _check_error, expression)</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// A private helper for CHECK_NOTNONE which is similar to the</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// CHECK_NOTNULL provided by glog.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="ke
yword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a1615c7d6964f0c54d4ecdf946a375468"> 65</a></span> T&& <a class="code" href="stout_2include_2stout_2check_8hpp.html#a1615c7d6964f0c54d4ecdf946a375468">_check_not_none</a>(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> line,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* message,</div><div class="line"><a name="l00069"></a><span class="li
neno"> 69</span>  <a class="code" href="classOption.html">Option<T></a>&& t) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (t.isNone()) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  google::LogMessageFatal(file, line, <span class="keyword">new</span> std::string(message));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> std::move(t).get();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class
="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#ae8332078d9371f487fd2ef82e0790741"> 78</a></span> T& <a class="code" href="stout_2include_2stout_2check_8hpp.html#a1615c7d6964f0c54d4ecdf946a375468">_check_not_none</a>(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">int</span> line,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* message,</div><div class="line"><a name="l00082"></a><span class="lin
eno"> 82</span>  <a class="code" href="classOption.html">Option<T></a>& t) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  google::LogMessageFatal(file, line, <span class="keyword">new</span> std::string(message));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> t.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"
></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a71659fa6a611179d993bf704b93244c6"> 91</a></span> <span class="keyword">const</span> T& <a class="code" href="stout_2include_2stout_2check_8hpp.html#a1615c7d6964f0c54d4ecdf946a375468">_check_not_none</a>(</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">int</span> line,</div><div class="line"><a name="l00094"></a><span class=
"lineno"> 94</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* message,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<T></a>& t) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  google::LogMessageFatal(file, line, <span class="keyword">new</span> std::string(message));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> t.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>();
</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#ab74090c878484a9a300eb62c98122bce"> 103</a></span> <span class="preprocessor">#define CHECK_NOTNONE(expression) \</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor"> _check_not_none( \</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor"> __FILE__, \</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"> __LINE__, \</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> 
;<span class="preprocessor"> "'" #expression "' Must be SOME", \</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor"> (expression))</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// A private helper for CHECK_NOTERROR which is similar to the</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// CHECK_NOTNULL provided by glog.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E></div><div class="line"><a name="l00114"></a><span class
="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a876deabff7ff512ac3214af5d6ea035c"> 114</a></span> T&& <a class="code" href="stout_2include_2stout_2check_8hpp.html#a876deabff7ff512ac3214af5d6ea035c">_check_not_error</a>(</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">int</span> line,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* message,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classTry.html">Try<T, E></a>&& t) {</div><div class="line"><a
name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span> (t.isError()) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  google::LogMessageFatal(</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  file,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  line,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">new</span> std::string(</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  std::string(message) + <span class="stringliteral">": "</span> + <a class="code" href="classError.html">Error</a>(t.error()).message));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">ret
urn</span> std::move(t).get();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E></div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#ab49ad8180b90346688b300a6e08ad100"> 131</a></span> T& <a class="code" href="stout_2include_2stout_2check_8hpp.html#a876deabff7ff512ac3214af5d6ea035c">_check_not_error</a>(</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemes
os_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">int</span> line,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* message,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classTry.html">Try<T, E></a>& t) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  google::LogMessageFatal(</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  file,</div><div class="line"><a name="l00139"></a><span class="linen
o"> 139</span>  line,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">new</span> std::string(</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  std::string(message) + <span class="stringliteral">": "</span> + <a class="code" href="classError.html">Error</a>(t.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>()).message));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> t.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a>
<span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E></div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#ad9d469a05a5fe736cf22df7f444bd8d7"> 148</a></span> <span class="keyword">const</span> T& <a class="code" href="stout_2include_2stout_2check_8hpp.html#a876deabff7ff512ac3214af5d6ea035c">_check_not_error</a>(</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">int</span> line,</div><div class="li
ne"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* message,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<T, E></a>& t) {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  google::LogMessageFatal(</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  file,</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  line,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">new</span> std::string(</d
iv><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  std::string(message) + <span class="stringliteral">": "</span> + <a class="code" href="classError.html">Error</a>(t.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>()).message));</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> t.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#adf9b1bd
608c56ac900dca9c4ad9f480e"> 164</a></span> <span class="preprocessor">#define CHECK_NOTERROR(expression) \</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor"> _check_not_error( \</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor"> __FILE__, \</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor"> __LINE__, \</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor"> "'" #expression "' Must be SOME", \</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor"> (expression))</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lin
eno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment">// Private structs/functions used for CHECK_*.</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a9c7cd7e7078583b31c6071a22960d070"> 175</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="stout_2include_2stout_2check_8hpp.html#a9c7cd7e7078583b31c6071a22960d070">_check_some</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<T></a>& o)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> {</div><div clas
s="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (o.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is NONE"</span>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  CHECK(o.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</spa
n>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E></div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a6e80969cabdc4bb32f79e5eaf4dbb61e"> 187</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="stout_2include_2stout_2check_8hpp.html#a9c7cd7e7078583b31c6071a22960d070">_check_some</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try<T, E></a>& t)</div><div class="line"><a name="l00188"></a><span class="lineno
"> 188</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(t.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  CHECK(t.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>());</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div clas
s="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a067202adf718f9137d709ece5cf81ff2"> 199</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="stout_2include_2stout_2check_8hpp.html#a9c7cd7e7078583b31c6071a22960d070">_check_some</a>(<span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& r)</div><div class="line"><a name="l00200">
</a><span class="lineno"> 200</span> {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (r.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(r.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is NONE
"</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  CHECK(r.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keyword">template</span> <<span class="keyword">typen
ame</span> T></div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#aaf5304a02b177169bfa3a16b8ce2bac8"> 213</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="stout_2include_2stout_2check_8hpp.html#aaf5304a02b177169bfa3a16b8ce2bac8">_check_none</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<T></a>& o)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span> (o.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is SOME&q
uot;</span>);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  CHECK(o.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>());</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">template</span> <<span class="keyword">typenam
e</span> T></div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a9e64c81e3a741ca8f79597c0c6cb27cd"> 225</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="stout_2include_2stout_2check_8hpp.html#aaf5304a02b177169bfa3a16b8ce2bac8">_check_none</a>(<span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& r)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span> (r.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is ERROR&q
uot;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is SOME"</span>);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  CHECK(r.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>());</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><d
iv class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> E></div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#aba23d5da524b5ee9268472df26123ea6"> 239</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="stout_2include_2stout_2check_8hpp.html#aba23d5da524b5ee9268472df26123ea6">_check_error</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try<T, E></a>&am
p; t)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">if</span> (t.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is SOME"</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  CHECK(t.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>());</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> <a class="code" href="stru
ctNone.html">None</a>();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="stout_2include_2stout_2check_8hpp.html#a5df80a05fdd271aa9271f495fef900b2"> 251</a></span> <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="stout_2include_2stout_2check_8hpp.html#aba23d5da524b5ee9268472df26123ea6">_check_error</a>(<span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& r)<
/div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span> (r.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"is NONE"</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (r.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"i
s SOME"</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  CHECK(r.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>());</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="struct__CheckFatal.html"> 264</a></span> <span class
="keyword">struct </span><a class="code" href="struct__CheckFatal.html">_CheckFatal</a></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="struct__CheckFatal.html#a3fbad38776418da918f5e20fc2709f85"> 266</a></span>  <a class="code" href="struct__CheckFatal.html#a3fbad38776418da918f5e20fc2709f85">_CheckFatal</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* _file,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">int</span> _line,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">type</a>,</div><div class="line"><a name="l00269"></a><span class="li
neno"> 269</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* expression,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keyword">const</span> <a class="code" href="classError.html">Error</a>& <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  : <a class="code" href="struct__CheckFatal.html#ab701924cad71a94d73cf80d181f34797">file</a>(_file),</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="struct__CheckFatal.html#a1af281107df1da1e4b9ae23d0479a5d6">line</a>(_line)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <a class="co
de" href="struct__CheckFatal.html#ac36bdde5291698e2c5a2211e3a1a345f">out</a> << type << <span class="stringliteral">"("</span> << expression << <span class="stringliteral">"): "</span> << error.<a class="code" href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">message</a> << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="struct__CheckFatal.html#a2676fe2db31884e70c3b51e3db6051d9"> 277</a></span>  <a class="code" href="struct__CheckFatal.html#a2676fe2db31884e70c3b51e3db6051d9">~_CheckFatal</a>()</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>
0; google::LogMessageFatal(<a class="code" href="struct__CheckFatal.html#ab701924cad71a94d73cf80d181f34797">file</a>.c_str(), <a class="code" href="struct__CheckFatal.html#a1af281107df1da1e4b9ae23d0479a5d6">line</a>).<a class="code" href="struct__CheckFatal.html#a466cba3d76cfcac25159354c654a282a">stream</a>() << <a class="code" href="struct__CheckFatal.html#ac36bdde5291698e2c5a2211e3a1a345f">out</a>.str();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="struct__CheckFatal.html#a466cba3d76cfcac25159354c654a282a"> 282</a></span>  std::ostream& <a class="code" href="struct__CheckFatal.html#a466cba3d76cfcac25159354c654a282a">stream</a>()</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  {</div><div class="line"><a name="l00284
"></a><span class="lineno"> 284</span>  <span class="keywordflow">return</span> <a class="code" href="struct__CheckFatal.html#ac36bdde5291698e2c5a2211e3a1a345f">out</a>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="struct__CheckFatal.html#ab701924cad71a94d73cf80d181f34797"> 287</a></span>  <span class="keyword">const</span> std::string <a class="code" href="struct__CheckFatal.html#ab701924cad71a94d73cf80d181f34797">file</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="struct__CheckFatal.html#a1af281107df1da1e4b9ae23d0479a5d6"> 288</a></span>  <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="struct__CheckFatal.html#a1af281107df1da1e4b9ae23d0479a5d6">line</a>;</div><
div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="struct__CheckFatal.html#ac36bdde5291698e2c5a2211e3a1a345f"> 289</a></span>  std::ostringstream <a class="code" href="struct__CheckFatal.html#ac36bdde5291698e2c5a2211e3a1a345f">out</a>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> };</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif // __STOUT_CHECK_HPP__</span></div><div class="ttc" id="struct__CheckFatal_html_a466cba3d76cfcac25159354c654a282a"><div class="ttname"><a href="struct__CheckFatal.html#a466cba3d76cfcac25159354c654a282a">_CheckFatal::stream</a></div><div class="ttdeci">std::ostream & stream()</div><div class="ttdef"><b>Definition:</b> check.hpp:282</div></div>
<div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
<div class="ttc" id="stout_2include_2stout_2check_8hpp_html_a9c7cd7e7078583b31c6071a22960d070"><div class="ttname"><a href="stout_2include_2stout_2check_8hpp.html#a9c7cd7e7078583b31c6071a22960d070">_check_some</a></div><div class="ttdeci">Option< Error > _check_some(const Option< T > &o)</div><div class="ttdef"><b>Definition:</b> check.hpp:175</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="struct__CheckFatal_html_a1af281107df1da1e4b9ae23d0479a5d6"><div class="ttname"><a href="struct__CheckFatal.html#a1af281107df1da1e4b9ae23d0479a5d6">_CheckFatal::line</a></div><div class="ttdeci">const int line</div><div class="ttdef"><b>Definition:</b> check.hpp:288</div></div>
@@ -76,7 +76,7 @@
<div class="ttc" id="option_8hpp_html"><div class="ttname"><a href="option_8hpp.html">option.hpp</a></div></div>
<div class="ttc" id="abort_8hpp_html"><div class="ttname"><a href="abort_8hpp.html">abort.hpp</a></div></div>
<div class="ttc" id="classTry_html_aec4a11ddd3c036e889d90b7eb6258ba7"><div class="ttname"><a href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">Try::error</a></div><div class="ttdeci">static Try error(const E &e)</div><div class="ttdef"><b>Definition:</b> try.hpp:42</div></div>
-<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:45</div></div>
+<div class="ttc" id="classError_html_a2d13609e80acd2a2a473a26f273b1c4f"><div class="ttname"><a href="classError.html#a2d13609e80acd2a2a473a26f273b1c4f">Error::message</a></div><div class="ttdeci">const std::string message</div><div class="ttdef"><b>Definition:</b> errorbase.hpp:46</div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
<div class="ttc" id="structNone_html"><div class="ttname"><a href="structNone.html">None</a></div><div class="ttdef"><b>Definition:</b> none.hpp:27</div></div>
<div class="ttc" id="classTry_html_a0b98f95163b8a38daafd1651b043a276"><div class="ttname"><a href="classTry.html#a0b98f95163b8a38daafd1651b043a276">Try::isError</a></div><div class="ttdeci">bool isError() const </div><div class="ttdef"><b>Definition:</b> try.hpp:71</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp.html b/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp.html
index 666831c..b151e93 100644
--- a/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp.html
+++ b/content/api/latest/c++/stout_2include_2stout_2gtest_8hpp.html
@@ -133,9 +133,9 @@ Functions</h2></td></tr>
<tr class="memitem:a132f4728e0e7ebab8dd069db7539cec5"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
<tr class="memitem:a132f4728e0e7ebab8dd069db7539cec5"><td class="memTemplItemLeft" align="right" valign="top">::testing::AssertionResult </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="stout_2include_2stout_2gtest_8hpp.html#a132f4728e0e7ebab8dd069db7539cec5">AssertSome</a> (const char *expr, const <a class="el" href="classOption.html">Option</a>< T > &actual)</td></tr>
<tr class="separator:a132f4728e0e7ebab8dd069db7539cec5"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a9c42a43dc448160ca174817baa269aaf"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr class="memitem:a9c42a43dc448160ca174817baa269aaf"><td class="memTemplItemLeft" align="right" valign="top">::testing::AssertionResult </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="stout_2include_2stout_2gtest_8hpp.html#a9c42a43dc448160ca174817baa269aaf">AssertSome</a> (const char *expr, const <a class="el" href="classTry.html">Try</a>< T > &actual)</td></tr>
-<tr class="separator:a9c42a43dc448160ca174817baa269aaf"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa8a6bf7719a389a661a3580da70a71fd"><td class="memTemplParams" colspan="2">template<typename T , typename E > </td></tr>
+<tr class="memitem:aa8a6bf7719a389a661a3580da70a71fd"><td class="memTemplItemLeft" align="right" valign="top">::testing::AssertionResult </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="stout_2include_2stout_2gtest_8hpp.html#aa8a6bf7719a389a661a3580da70a71fd">AssertSome</a> (const char *expr, const <a class="el" href="classTry.html">Try</a>< T, E > &actual)</td></tr>
+<tr class="separator:aa8a6bf7719a389a661a3580da70a71fd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ad0bdb0d91a1245ea8ff50ab019aea186"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
<tr class="memitem:ad0bdb0d91a1245ea8ff50ab019aea186"><td class="memTemplItemLeft" align="right" valign="top">::testing::AssertionResult </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="stout_2include_2stout_2gtest_8hpp.html#ad0bdb0d91a1245ea8ff50ab019aea186">AssertSome</a> (const char *expr, const <a class="el" href="classResult.html">Result</a>< T > &actual)</td></tr>
<tr class="separator:ad0bdb0d91a1245ea8ff50ab019aea186"><td class="memSeparator" colspan="2"> </td></tr>
@@ -1012,11 +1012,11 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="a9c42a43dc448160ca174817baa269aaf"></a>
+<a class="anchor" id="aa8a6bf7719a389a661a3580da70a71fd"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template<typename T > </div>
+template<typename T , typename E > </div>
<table class="memname">
<tr>
<td class="memname">::testing::AssertionResult AssertSome </td>
@@ -1027,7 +1027,7 @@ template<typename T > </div>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">const <a class="el" href="classTry.html">Try</a>< T > & </td>
+ <td class="paramtype">const <a class="el" href="classTry.html">Try</a>< T, E > & </td>
<td class="paramname"><em>actual</em> </td>
</tr>
<tr>
[07/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/uri__disk__profile__adaptor_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/uri__disk__profile__adaptor_8hpp_source.html b/content/api/latest/c++/uri__disk__profile__adaptor_8hpp_source.html
index 7a446e6..5c3fea5 100644
--- a/content/api/latest/c++/uri__disk__profile__adaptor_8hpp_source.html
+++ b/content/api/latest/c++/uri__disk__profile__adaptor_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="uri__disk__profile__adaptor_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l
00006"></a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="c
omment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __RESOURCE_PROVIDER_URI_DISK_PROFILE_ADAPTOR_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __RESOUR
CE_PROVIDER_URI_DISK_PROFILE_ADAPTOR_HPP__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <tuple></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="include_2csi_2spec_8hpp.html">csi/spec.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</s
pan> <span class="preprocessor">#include <<a class="code" href="resource__provider_2storage_2disk__profile__adaptor_8hpp.html">mesos/resource_provider/storage/disk_profile_adaptor.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="future_8hpp.html">process/future.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="owned_8hpp.html">process/owned.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </
div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2libprocess_2include_2process_2ssl_2flags_8hpp.html">process/ssl/flags.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>></span></div><div class="line"><a name="l00037"></a><span cl
ass="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="disk__profile__utils_8hpp.html">resource_provider/storage/disk_profile_utils.hpp</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span cla
ss="lineno"> 43</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">namespace </span>storage {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">class </span>UriDiskProfileAdaptorProcess;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">/
/ The `UriDiskProfileAdaptor` is an example DiskProfileAdaptor module</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// that takes a URI as a module parameter and fetches that URI</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// periodically. The fetched data is parsed into the required CSI</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// protobufs (which also acts as validation).</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">//</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// If there is an error during fetching, any previously fetched results</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// wi
ll be used until fetching is successful.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">//</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// This module does not filter return results based on</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// `CSIPluginInfo::type` and assumes that all fetched profiles are meant</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// for all resource providers.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">//</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// See `UriDiskProfileAdaptor::Flags` below for more information.</span></div><div class="line"><a name="l00063"></a><s
pan class="lineno"><a class="line" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html"> 63</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html">UriDiskProfileAdaptor</a> : <span class="keyword">public</span> <a class="code" href="classmesos_1_1DiskProfileAdaptor.html">DiskProfileAdaptor</a></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html"> 66</a></span>  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html">Flags</a> : <span class="keyword">public</span> <span class="keyword">virtu
al</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#ab4e89182c53b60ad6ddf389ce595612a"> 68</a></span>  <a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#ab4e89182c53b60ad6ddf389ce595612a">Flags</a>()</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#a2ffb60f4d9923cc1791fd59c5cd45a1a">Flags::uri</a>,</div><div class="line"><a name="l00071
"></a><span class="lineno"> 71</span>  <span class="stringliteral">"uri"</span>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="stringliteral">"URI to a JSON object containing the disk profile mapping.\n"</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="stringliteral">"This module supports both HTTP(s) and file URIs\n."</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="stringliteral">"The JSON object should consist of some top-level string keys\n"</span></div><div
class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="stringliteral">"corresponding to the disk profile name. Each value should contain\n"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">"a `ResourceProviderSelector` under 'resource_provider_selector' or\n"</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="stringliteral">"a `CSIPluginTypeSelector` under 'csi_plugin_type_selector' to\n"</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="stringliteral">"specify the set of resource providers this profile applies to,\n"</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="stringliteral">"followed by a `VolumeCapability` unde
r 'volume_capabilities'\n"</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="stringliteral">"and a free-form string-string mapping under 'create_parameters'.\n"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="stringliteral">"The JSON is modeled after a protobuf found in\n"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="stringliteral">"`src/resource_provider/storage/disk_profile.proto`.\n"</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00087"></a><span class="lineno">
87</span>  <span class="stringliteral">"For example:\n"</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="stringliteral">"{\n"</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="stringliteral">" \"profile_matrix\" : {\n"</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="stringliteral">" \"my-profile\" : {\n"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="stringliteral">" \"csi_plugin_type_selector\": {\n"</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="stringliteral">" \"plugin_type\" : \"org.apache.mesos.csi.test\"\n"</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="stringliteral">" \"},\n"</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="stringliteral">" \"volume_capabilities\" : {\n"</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="stringliteral">" \"block\" : {},\n"</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="stringliteral">" \"access_mode\" : { \"mode\" : \"SINGLE_NODE_WRITER\" }\n"</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="stringliteral">" },\n"</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <s
pan class="stringliteral">" \"create_parameters\" : {\n"</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="stringliteral">" \"mesos-does-not\" : \"interpret-these\",\n"</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="stringliteral">" \"type\" : \"raid5\",\n"</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="stringliteral">" \"stripes\" : \"3\",\n"</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="stringliteral">" \"stripesize\" : \"64\"\n"</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="stringliteral
">" }\n"</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="stringliteral">" }\n"</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="stringliteral">" }\n"</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="stringliteral">"}"</span>,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  static_cast<const Path*>(<span class="keyword">nullptr</span>),</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  [](<span class="keyword">const</span> <a class="code" href="classPath.html">Path</a>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span cla
ss="comment">// For now, just check if the URI has a supported scheme.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">//</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// TODO(josephw): Once we have a proper URI class and parser,</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// consider validating this URI more thoroughly.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(value.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>(), <span class="stringliteral">"http://"</span>)</div><div class="line"><a name="l00114"></a><span
class="lineno"> 114</span> #ifdef USE_SSL_SOCKET</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  || (<a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">process::network::openssl::flags</a>().enabled &&</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(value.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>(), <span class="stringliteral">"https://"</span>))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  ) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="co
de" href="classTry.html">Try<process::http::URL></a> url =</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="structprocess_1_1http_1_1URL.html#aeb5accae04a1e271d4fdafa22131c150">process::http::URL::parse</a>(value.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>());</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span> (url.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to parse URI: "</span> + url.<a class="code" href="classTry.html#aec4a11ddd
3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// NOTE: The `Path` class will strip off the 'file://' prefix.</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">
strings::contains</a>(value.<a class="code" href="classPath.html#a9d36a94d674e3f889eb8f46dc7a156b8">string</a>(), <span class="stringliteral">"://"</span>)) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="stringliteral">"--uri must use a supported scheme (file or http(s))"</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// We only allow absolute paths for file paths.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> 
<span class="keywordflow">if</span> (!value.<a class="code" href="classPath.html#a240c7b71a23c8e97b5490dbae75cc948">absolute</a>()) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"--uri to a file must be an absolute path"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  });</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name
="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#aff3b281cc2a2c6a0bf0dc598482efbae">Flags::poll_interval</a>,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="stringliteral">"poll_interval"</span>,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="stringliteral">"How long to wait between polling the specified `--uri`.\n"</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="stringliteral">"The time is checked each time the `translate` method is called.\n"</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="stringliteral">&q
uot;If the given time has elapsed, then the URI is re-fetched.\n"</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="stringliteral">"If not specified, the URI is only fetched once."</span>,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  [](<span class="keyword">const</span> <a class="code" href="classOption.html">Option<Duration></a>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span> (value.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() && value.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() <= <a class="code" href="classSeconds.html">Seconds</a>(0)) {</div><div class="line"><a name="l00151"></a><span class="
lineno"> 151</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"--poll_interval must be non-negative"</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  });</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_
1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#a2f95281a8b197431418da487761b22d9">Flags::max_random_wait</a>,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="stringliteral">"max_random_wait"</span>,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="stringliteral">"How long at most to wait between discovering a new set of profiles\n"</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="stringliteral">"and notifying the callers of `watch`. The actual wait time is a\n"</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="stringliteral">"uniform random value between 0 and this value. If `--uri` points\n"</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class=
"stringliteral">"to a centralized location, it may be good to scale this number\n"</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="stringliteral">"according to the number of resource providers in the cluster."</span>,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classSeconds.html">Seconds</a>(0),</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  [](<span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (value < <a class="code" href="classSeconds.html">Seconds</a>(0)) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</
span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"--max_random_wait must be zero or greater"</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  });</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// NOTE: We use the `Path` type here so that t
he stout flags parser</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// does not attempt to read a file if given a `file://` prefixed value.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">//</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// TODO(josephw): Replace with a URI type when stout gets one.</span></div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#a2ffb60f4d9923cc1791fd59c5cd45a1a"> 178</a></span>  <a class="code" href="classPath.html">Path</a> <a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#a2ffb60f4d9923cc1791fd59c5cd45a1a">uri</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</s
pan> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#aff3b281cc2a2c6a0bf0dc598482efbae"> 180</a></span>  <a class="code" href="classOption.html">Option<Duration></a> <a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#aff3b281cc2a2c6a0bf0dc598482efbae">poll_interval</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#a2f95281a8b197431418da487761b22d9"> 181</a></span>  <a class="code" href="classDuration.html">Duration</a> <a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#a2f95281a8b197431418da487761b22d9">max_random_wait</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  };</div><div class="line"><a name
="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#a42899d4a38c59c8ea1a141ffc5e17d9a">UriDiskProfileAdaptor</a>(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html">Flags</a>& _flags);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#a7a5f65d93bc176be7312bc9bec2ee87f">~UriDiskProfileAdaptor</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name
="l00189"></a><span class="lineno"> 189</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future<DiskProfileAdaptor::ProfileInfo></a> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#aca95d2463b19eaa4943799c918fd14d3">translate</a>(</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">const</span> std::string& profile,</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">const</span> ResourceProviderInfo& resourceProviderInfo) <span class="keyword">override</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future<hashset<std::string
></a>> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#a78238dcf4390fc6932b5ea7db43f0e68">watch</a>(</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset<std::string></a>& knownProfiles,</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">const</span> ResourceProviderInfo& resourceProviderInfo) <span class="keyword">override</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#a8d8f8910e9c1da5f1ca31d191b591d82"> 198</a></span>  <a class
="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html">Flags</a> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#a8d8f8910e9c1da5f1ca31d191b591d82">flags</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#ac061c8a485083fc218a3bc63efe21aea"> 199</a></span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<UriDiskProfileAdaptorProcess></a> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#ac061c8a485083fc218a3bc63efe21aea">process</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> };</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno
"><a class="line" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptorProcess.html"> 203</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptorProcess.html">UriDiskProfileAdaptorProcess</a> :</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">process::Process</a><UriDiskProfileAdaptorProcess></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptorProcess.html">UriDiskProfileAdaptorProcess</a>(<span class="keyword">const</span> <a class="code" href="structmesos
_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html">UriDiskProfileAdaptor::Flags</a>& _flags);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="namespacesystemd.html#a4e45b8163baf6d307c9884d624472402">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<DiskProfileAdaptor::ProfileInfo></a> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#aca95d2463b19eaa4943799c918fd14d3">translate</a>(</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <sp
an class="keyword">const</span> std::string& profile,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">const</span> ResourceProviderInfo& resourceProviderInfo);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<hashset<std::string></a>> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#a78238dcf4390fc6932b5ea7db43f0e68">watch</a>(</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset<std::string></a>& knownProfiles,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">const</span> ResourceProviderInfo
& resourceProviderInfo);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// Helpers for fetching the `--uri`.</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// If `--poll_interval` is set, this method will dispatch to itself with</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// a delay once the fetch is complete.</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordtype">void</span> <a class="code" href="namespaceprocess_1_1io.html#af71c45e0a85e21f6b39060f4e716cebf">poll</a>();</div><div class="line"><a name="l00224"></a><span cl
ass="lineno"> 224</span>  <span class="keywordtype">void</span> _poll(<span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::string></a>& fetched);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// Helper that is called upon successfully polling and parsing the `--uri`.</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// This method will check the following conditions before updating the state</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// of the module:</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// * All known profiles must be included in the updated set.</span></div><div class="line"><a name="
l00230"></a><span class="lineno"> 230</span>  <span class="comment">// * All properties of known profiles must match those in the updated set.</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordtype">void</span> notify(<span class="keyword">const</span> resource_provider::DiskProfileMapping& parsed);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html">UriDiskProfileAdaptor::Flags</a> <a class="code" href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#a8d8f8910e9c1da5f1ca31d191b591d82">flags</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 23
5</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// The last fetched profile mapping.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// This module assumes that profiles can only be added and never</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// removed. Once added, a profile's volume capability and parameters</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// cannot be changed either.</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">//</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// TODO(josephw): Consider persisting this mapping across agent restarts.</span></div><div class="
line"><a name="l00242"></a><span class="lineno"> 242</span>  std::map<std::string, resource_provider::DiskProfileMapping::CSIManifest></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  profileMatrix;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// Will be satisfied whenever `profileMatrix` is changed.</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<process::Promise<Nothing></a>> watchPromise;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> };</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> } <span class="comment">// name
space storage {</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor">#endif // __RESOURCE_PROVIDER_URI_DISK_PROFILE_ADAPTOR_HPP__</span></div><div class="ttc" id="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptorProcess_html"><div class="ttname"><a href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptorProcess.html">mesos::internal::storage::UriDiskProfileAdaptorProcess</a></div><div class="ttdef"><b>Definition:</b> uri_disk_profile_adaptor.hpp:203</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags_html_aff3b281cc2a2c6a0bf0dc598482efbae"><div class="ttname"><a href="structmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_1_1Flags.html#aff3b281cc2a2c6a0bf0dc598482efbae">mesos::internal::storage::UriDiskProfileAdaptor::Flags::poll_interval</a></div><div class="ttdeci">Option< Duration > poll_interval</div><div class="ttdef"><b>Definition:</b> uri_disk_profile_adaptor.hpp:180</div></div>
<div class="ttc" id="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor_html_aca95d2463b19eaa4943799c918fd14d3"><div class="ttname"><a href="classmesos_1_1internal_1_1storage_1_1UriDiskProfileAdaptor.html#aca95d2463b19eaa4943799c918fd14d3">mesos::internal::storage::UriDiskProfileAdaptor::translate</a></div><div class="ttdeci">virtual process::Future< DiskProfileAdaptor::ProfileInfo > translate(const std::string &profile, const ResourceProviderInfo &resourceProviderInfo) override</div><div class="ttdoc">Returns the CSI volume capability and the parameters to create CSI volumes associated with the profil...</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/url_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/url_8hpp_source.html b/content/api/latest/c++/url_8hpp_source.html
index a184396..6935e73 100644
--- a/content/api/latest/c++/url_8hpp_source.html
+++ b/content/api/latest/c++/url_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="url_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span class="
lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distributed u
nder the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __MESOS_ZOOKEEPER_URL_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __MESOS_ZOOKEEPER_URL_HPP__</span></div><div class="lin
e"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="zookeeper_2authentication_8hpp.html">mesos/zookeeper/authentication.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div
><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespacezookeeper.html">zookeeper</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Describes a ZooKeeper URL of the form:</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//<
/span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// zk://username:password@servers/path</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">//</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Where username:password is for the 'digest' scheme (see ZooKeeper</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// documentation regarding "access controls using ACLs") and servers</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// is of the form:</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class
="comment">// host1:port1,host2:port2,host3:port3</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">//</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Note that in the future we may want to support authentication</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// mechanisms other than 'digest' and have a URL of the following</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// form.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// zk://scheme:credentials@servers/path</span></div><div class="line"><a name="l00046"></a><span class="lineno"><
a class="line" href="classzookeeper_1_1URL.html"> 46</a></span> <span class="keyword">class </span><a class="code" href="classzookeeper_1_1URL.html">URL</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<URL></a> <a class="code" href="classzookeeper_1_1URL.html#a1da68f8b465c13a553cb240827fda1a8">parse</a>(<span class="keyword">const</span> std::string& url);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classzookeeper_1_1URL.html#acc2085786e441331fb2278cc19000179"> 51</a></span>  <span class="keyword">static</span> <span
class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classzookeeper_1_1URL.html#acc2085786e441331fb2278cc19000179">scheme</a>()</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="stringliteral">"zk://"</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classzookeeper_1_1URL.html#af488b82c9914311e9a2b1551105082ce"> 56</a></span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<Authentication></a> <a class="code" href="classzookeeper_1_1URL.html#af488b82c9914311e9a2b1551105082ce">authentication</a>;</div><di
v class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classzookeeper_1_1URL.html#ae29114169f07a2e7c0f455d78985ac0d"> 57</a></span>  <span class="keyword">const</span> std::string <a class="code" href="classzookeeper_1_1URL.html#ae29114169f07a2e7c0f455d78985ac0d">servers</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classzookeeper_1_1URL.html#a019d70985b338f788012413dc84ce706"> 58</a></span>  <span class="keyword">const</span> std::string <a class="code" href="classzookeeper_1_1URL.html#a019d70985b338f788012413dc84ce706">path</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classzookeeper_1_1URL.html">URL</a>(<span class="keyword">cons
t</span> std::string& _servers,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> std::string& _path)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  : servers(_servers),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  path(_path) {}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classzookeeper_1_1URL.html">URL</a>(<span class="keyword">const</span> std::string& credentials,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> std::string& _servers,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">const</span> std::string& _path)</div><div
class="line"><a name="l00069"></a><span class="lineno"> 69</span>  : <a class="code" href="classzookeeper_1_1URL.html#af488b82c9914311e9a2b1551105082ce">authentication</a>(<a class="code" href="structzookeeper_1_1Authentication.html">Authentication</a>(<span class="stringliteral">"digest"</span>, credentials)),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classzookeeper_1_1URL.html#ae29114169f07a2e7c0f455d78985ac0d">servers</a>(_servers),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classzookeeper_1_1URL.html#a019d70985b338f788012413dc84ce706">path</a>(_path) {}</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"
><a name="l00075"></a><span class="lineno"><a class="line" href="classzookeeper_1_1URL.html#a1da68f8b465c13a553cb240827fda1a8"> 75</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<URL></a> <a class="code" href="classzookeeper_1_1URL.html#a1da68f8b465c13a553cb240827fda1a8">URL::parse</a>(<span class="keyword">const</span> std::string& url)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::string s = <a class="code" href="namespacestrings.html#a91df967b38a9c92553f009d681688734">strings::trim</a>(url);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(s
, <a class="code" href="classzookeeper_1_1URL.html#acc2085786e441331fb2278cc19000179">URL::scheme</a>())) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Expecting 'zk://' at the beginning of the URL"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  s = s.substr(5);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Look for the trailing '/' (if any), that's where the path starts.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::string <a class="code" href="classzookeeper_1_1URL.h
tml#a019d70985b338f788012413dc84ce706">path</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">do</span> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> = s.find_last_of(<span class="charliteral">'/'</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (index == std::string::npos) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00092"><
/a><span class="lineno"> 92</span>  path = s.substr(index) + <a class="code" href="classzookeeper_1_1URL.html#a019d70985b338f788012413dc84ce706">path</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  s = s.substr(0, index);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (path == <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  path = <span class="stringliteral">"/"</span>;</div><div class="line"><a name="l00099"></a><span class=
"lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Look for the trailing '@' (if any), that's where servers starts.</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a> = s.find_last_of(<span class="charliteral">'@'</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (index != std::string::npos) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classzookeeper_1_
1URL.html">URL</a>(s.substr(0, index), s.substr(index + 1), <a class="code" href="classzookeeper_1_1URL.html#a019d70985b338f788012413dc84ce706">path</a>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> <a class="code" href="classzookeeper_1_1URL.html">URL</a>(s, path);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespacezookeeper.html#a9716bc853a28dca908b56916f680867c"> 111</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespacezookeeper.h
tml#a7809602b75b99bb5626bb3a926b750b1">operator<<</a>(std::ostream& stream, <span class="keyword">const</span> <a class="code" href="classzookeeper_1_1URL.html">URL</a>& url)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  stream << <a class="code" href="classzookeeper_1_1URL.html#acc2085786e441331fb2278cc19000179">URL::scheme</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span> (url.<a class="code" href="classzookeeper_1_1URL.html#af488b82c9914311e9a2b1551105082ce">authentication</a>.isSome()) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  stream << url.<a class="code" href="classzookeeper_1_1URL.html#af488b82c9914311e9a2b1551105082ce">authentication</a>.get() << <span class="stringliteral">"@"</span>;</di
v><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> stream << url.<a class="code" href="classzookeeper_1_1URL.html#ae29114169f07a2e7c0f455d78985ac0d">servers</a> << url.<a class="code" href="classzookeeper_1_1URL.html#a019d70985b338f788012413dc84ce706">path</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> } <span class="comment">// namespace zookeeper {</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#endif // __MESOS_ZOOKEEPER_URL_HPP__</span></div><div class="t
tc" id="classzookeeper_1_1URL_html_ae29114169f07a2e7c0f455d78985ac0d"><div class="ttname"><a href="classzookeeper_1_1URL.html#ae29114169f07a2e7c0f455d78985ac0d">zookeeper::URL::servers</a></div><div class="ttdeci">const std::string servers</div><div class="ttdef"><b>Definition:</b> url.hpp:57</div></div>
<div class="ttc" id="classzookeeper_1_1URL_html_a019d70985b338f788012413dc84ce706"><div class="ttname"><a href="classzookeeper_1_1URL.html#a019d70985b338f788012413dc84ce706">zookeeper::URL::path</a></div><div class="ttdeci">const std::string path</div><div class="ttdef"><b>Definition:</b> url.hpp:58</div></div>
<div class="ttc" id="namespacezookeeper_html_a7809602b75b99bb5626bb3a926b750b1"><div class="ttname"><a href="namespacezookeeper.html#a7809602b75b99bb5626bb3a926b750b1">zookeeper::operator<<</a></div><div class="ttdeci">std::ostream & operator<<(std::ostream &stream, const Authentication &authentication)</div><div class="ttdef"><b>Definition:</b> authentication.hpp:61</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespacerouting_1_1link_html_a26486cdba01ef1c80706b1e07e8a6d3f"><div class="ttname"><a href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">routing::link::index</a></div><div class="ttdeci">Result< int > index(const std::string &link)</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/utime_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/utime_8hpp_source.html b/content/api/latest/c++/utime_8hpp_source.html
index bd29185..b88ab8a 100644
--- a/content/api/latest/c++/utime_8hpp_source.html
+++ b/content/api/latest/c++/utime_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="utime_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span><
/div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"
><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_UTIME_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_UTIME_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <sys/utime.h></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#else</span></div><div
class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <utime.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="linen
o"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Sets the access and modification times of 'path' to the current time.</span></div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="namespaceos.html#a818327458964860a86fc8964e4795b4d"> 32</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a818327458964860a86fc8964e4795b4d">utime</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>
)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// NOTE: on Windows, this correctly dispatches to `_utime`, so there is no</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// need to create a function alias in `stout/windows.hpp` as we have done for</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// `stout/os/mkdir.hpp` and friends.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a818327458964860a86fc8964e4795b4d">utime</a>(path.c_str(), <span class="keyword">nullptr</span>) == -1) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordfl
ow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class=
"preprocessor">#endif // __STOUT_OS_UTIME_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="namespaceos_html_a818327458964860a86fc8964e4795b4d"><div class="ttname"><a href="namespaceos.html#a818327458964860a86fc8964e4795b4d">os::utime</a></div><div class="ttdeci">Try< Nothing > utime(const std::string &path)</div><div class="ttdef"><b>Definition:</b> utime.hpp:32</div></div>
[23/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2stat_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2stat_8hpp_source.html b/content/api/latest/c++/posix_2stat_8hpp_source.html
index 7032e2a..0de0d6d 100644
--- a/content/api/latest/c++/posix_2stat_8hpp_source.html
+++ b/content/api/latest/c++/posix_2stat_8hpp_source.html
@@ -55,14 +55,14 @@
<a href="posix_2stat_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</
span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class=
"line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_STAT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_STAT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sys/stat.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <sys/statvfs.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line
"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><di
v class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">stat</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Specify whether symlink path arguments should be followed or</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// not. APIs in the os::stat family that take a FollowSymlink</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// argument all provide FollowSymlink::FOLLOW_SYMLINK as the default value,</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// so they will follow symlinks unless otherwise sp
ecified.</span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c"> 34</a></span> <span class="keyword">enum class</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">DO_NOT_FOLLOW_SYMLINK</a>,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FOLLOW_SYMLINK</a></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> };</div><div class="line"><a name="l00039"></a><span class
="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat_1_1internal.html"> 41</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1"> 43</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<struct ::stat></a> <a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">stat</a>(</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> std::string& <a class="code" href="names
pacepath.html">path</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">struct ::stat</a> s;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">switch</span> (follow) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7
e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (::lstat(path.c_str(), &s) < 0) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to lstat '"</span> + path + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> s;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">
FollowSymlink::FOLLOW_SYMLINK</a>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">stat</a>(path.c_str(), &s) < 0) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to stat '"</span> + path + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> s;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno">
61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d"> 66</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<struct ::stat></a> <a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">stat</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</div><div class="line"><a name="l
00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="namespaceos_1_1stat_1_1internal.html#a1e8d1b1fd61d53e84b399c10bb67520d">struct ::stat</a> s;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (::fstat(fd, &s) < 0) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> s;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="lin
e"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480"> 78</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">islink</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// By definition, you don't follow symlinks when trying</span></div><div cl
ass="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// to find whether a path is a link. If you followed it,</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// it wouldn't ever be a link.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  path, <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca884cbffa48c7e5b804161fdc71389c7e">FollowSymlink::DO_NOT_FOLLOW_SYMLINK</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> s.<a class="code" href="classTry.html#a654
3d7d5db4f298bcd673bf3cd509acc">isSome</a>() && <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a255249008157db126b6981929505f9e4">S_ISLNK</a>(s->st_mode);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40"> 89</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">isdir</a>(</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a
name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> s.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && <a class="code" href="3rdparty_2stout_2include_2stou
t_2windows_8hpp.html#abc71c1741c013cc1f2fb33c5e1e6f139">S_ISDIR</a>(s->st_mode);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// TODO(andschwa): Share logic with other overload.</span></div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a0797b18b32940eefae0d4db235e2167d"> 99</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">isdir</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</div><div class="line"><a name="l001
00"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(fd);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> s.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abc71c1741c013cc1f2fb33c5e1e6f139">S_ISDIR</a>(s->st_mode);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"
><a class="line" href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5"> 106</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5">isfile</a>(</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno">
110</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> s.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a4c11a40f6ccc71f875e8f11929aad707">S_ISREG</a>(s->st_mode);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// Returns the size in Bytes of a given file system entry. When</
span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// applied to a symbolic link with `follow` set to</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// `DO_NOT_FOLLOW_SYMLINK`, this will return the length of the entry</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// name (strlen).</span></div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be"> 119</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>(</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">const</span> std::string& <a class="code" href="n
amespacepath.html">path</a>,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><d
iv class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(s->st_size);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// TODO(andschwa): Sha
re logic with other overload.</span></div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a8e5d1965ab97592fe1e15ea8201d135c"> 133</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>(<span class="keyword">const</span> <a class="code" href="int__fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(fd);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (s
.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(s->st_size);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name=
"l00144"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a7305d671adaae193b8c158bf058180ee"> 144</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<long></a> <a class="code" href="namespaceos_1_1stat.html#a7305d671adaae193b8c158bf058180ee">mtime</a>(</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class=
"line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> 
<span class="keywordflow">return</span> s->st_mtime;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa"> 157</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mode_t></a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>(</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">const</span> <a class="code" hr
ef="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(
s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> s->st_mode;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a083c9ff4aefeba1a75a27e6a6d6e2a71"> 170</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<dev_t></a> <a class="code" href="namespaceos_1_1stat.html#a083c9ff4aefeba1a75a27e6a6d6e2a71">d
ev</a>(</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00175"></a><span
class="lineno"> 175</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> s->st_dev;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><di
v class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a4375e0a26dfaf8f4a1ff72bf97eebecc"> 183</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<dev_t></a> <a class="code" href="namespaceos_1_1stat.html#a4375e0a26dfaf8f4a1ff72bf97eebecc">rdev</a>(</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&
#160;{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="line
no"> 192</span>  <span class="keywordflow">if</span> (!<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a74ba556c8168bb9556a34cf25d5fbb4a">S_ISCHR</a>(s->st_mode) && !<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a292ccd479f68ea0e4b53ee393f165872">S_ISBLK</a>(s->st_mode)) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not a special file: "</span> + path);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">return</span> s->st_rdev;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> }</
div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#ac48383be68af20ef17fe5b87177636b8"> 200</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<ino_t></a> <a class="code" href="namespaceos_1_1stat.html#ac48383be68af20ef17fe5b87177636b8">inode</a>(</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c
82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00207"></a><span class=
"lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> s->st_ino;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb"> 213</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<uid_t></a> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>(</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">const</span> std::string&am
p; <a class="code" href="namespacepath.html">path</a>,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">const</span> <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1c">FollowSymlink</a> follow = <a class="code" href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">FollowSymlink::FOLLOW_SYMLINK</a>)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="classTry.html">Try<struct ::stat></a> s = <a class="code" href="namespaceos_1_1stat_1_1internal.html#aaa15e8ca46f9a135dc642eeb8340d0c1">internal::stat</a>(path, follow);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (s.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276
">isError</a>()) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(s.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> s->st_uid;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> } <span class="comment">// namespace stat {</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="l
ine"><a name="l00227"></a><span class="lineno"> 227</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_STAT_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a96066cfc01f1f62fc25b56f6915800eb"><div class="ttname"><a href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">os::stat::uid</a></div><div class="ttdeci">Try< uid_t > uid(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:213</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a178d1c99fc88dae58f9a5fc4fc3167d5"><div class="ttname"><a href="namespaceos_1_1stat.html#a178d1c99fc88dae58f9a5fc4fc3167d5">os::stat::isfile</a></div><div class="ttdeci">bool isfile(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:106</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_abc71c1741c013cc1f2fb33c5e1e6f139"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#abc71c1741c013cc1f2fb33c5e1e6f139">S_ISDIR</a></div><div class="ttdeci">bool S_ISDIR(const int mode)</div><div class="ttdef"><b>Definition:</b> windows.hpp:200</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a0ba4d272b938da76e404648103077480"><div class="ttname"><a href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">os::stat::islink</a></div><div class="ttdeci">bool islink(const std::string &path)</div><div class="ttdef"><b>Definition:</b> stat.hpp:78</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5"><div class="ttname"><a href="namespaceos_1_1stat.html#a305c82e6d53ccd82665b4b3648afcd1ca52881123108233bc671c71041ff852c5">os::stat::FollowSymlink::FOLLOW_SYMLINK</a></div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a4c11a40f6ccc71f875e8f11929aad707"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a4c11a40f6ccc71f875e8f11929aad707">S_ISREG</a></div><div class="ttdeci">bool S_ISREG(const int mode)</div><div class="ttdef"><b>Definition:</b> windows.hpp:206</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7305d671adaae193b8c158bf058180ee"><div class="ttname"><a href="namespaceos_1_1stat.html#a7305d671adaae193b8c158bf058180ee">os::stat::mtime</a></div><div class="ttdeci">Try< long > mtime(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:144</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_ac48383be68af20ef17fe5b87177636b8"><div class="ttname"><a href="namespaceos_1_1stat.html#ac48383be68af20ef17fe5b87177636b8">os::stat::inode</a></div><div class="ttdeci">Try< ino_t > inode(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:200</div></div>
[33/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/libprocess_2include_2process_2ssl_2gtest_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libprocess_2include_2process_2ssl_2gtest_8hpp_source.html b/content/api/latest/c++/libprocess_2include_2process_2ssl_2gtest_8hpp_source.html
index f6e97dc..5e88d1e 100644
--- a/content/api/latest/c++/libprocess_2include_2process_2ssl_2gtest_8hpp_source.html
+++ b/content/api/latest/c++/libprocess_2include_2process_2ssl_2gtest_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="libprocess_2include_2process_2ssl_2gtest_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="lin
e"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <
span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __PROCESS_SSL_TEST_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __PROCESS_SSL_TEST_HP
P__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <openssl/rsa.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <openssl/bio.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <openssl/x509.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span clas
s="preprocessor">#include <openssl/x509v3.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2libprocess_2include_2process_2io_8hpp.html">process/io.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="libprocess_2include_2process_2socket_8hpp.html">process/socket.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="subprocess_8hpp.html">pro
cess/subprocess.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="utilities_8hpp.html">process/ssl/utilities.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div cl
ass="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <<a class="code" href="realpath_8hpp.html">stout/os/realpath.hpp</a>></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2tests_2utils_8hpp.html">stout/tests/utils.hpp</a>></span></div><div class="line"><a name="l00044"></a><span class="lineno
"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#ifdef USE_SSL_SOCKET</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">namespace </span>network {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">namespace </span>openssl {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Forward declare the `reinitialize()` function since we want to</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// programatically change
SSL flags during tests.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">void</span> reinitialize();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> } <span class="comment">// namespace openssl {</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> } <span class="comment">// namespace network {</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> } <span class="comment">// namespace process {</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//
When SSL is not compiled in, we want the `SSLTemporaryDirectoryTest` class</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// to exist, so that other tests can inherit it; this class is equivalent</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// to the `TemporaryDirectoryTest` under that condition.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#ifndef USE_SSL_SOCKET</span></div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSSLTemporaryDirectoryTest.html"> 63</a></span> <span class="keyword">class </span><a class="code" href="classSSLTemporaryDirectoryTest.html">SSLTemporaryDirectoryTest</a> : <span class="keyword">public</span> <a class="code" href="classTemporaryDirectoryTest.html">TemporaryDirectoryTest</a> {};</div><div class="line"><
a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">class </span><a class="code" href="classSSLTemporaryDirectoryTest.html">SSLTemporaryDirectoryTest</a> : <span class="keyword">public</span> <a class="code" href="classTemporaryDirectoryTest.html">TemporaryDirectoryTest</a></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> TearDownTestCase()</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class=
"line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Clear and reset any environment variables.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  set_environment_variables({});</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classPath.html">Path</a> key_path()</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classPath.html">Path</a>(<a class="code" href="namespacepath
.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a>(), <span class="stringliteral">"key.pem"</span>));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="classPath.html">Path</a> certificate_path()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <a class="code" href="classPath.html">Path</a>(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a>(), <span class="stringlitera
l">"cert.pem"</span>));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classPath.html">Path</a> scrap_key_path()</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classPath.html">Path</a>(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a>(), <span class="stringliteral">"scrap_key.pem"</span>));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><spa
n class="lineno"> 102</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classPath.html">Path</a> scrap_certificate_path()</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <a class="code" href="classPath.html">Path</a>(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#a84a3290f051cdd50d88e0fd611645d4a">os::getcwd</a>(), <span class="stringliteral">"scrap_cert.pem"</span>));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">static</span> <sp
an class="keywordtype">void</span> set_environment_variables(</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">const</span> std::map<std::string, std::string>& <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// This unsets all the SSL environment variables. Necessary for</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// ensuring a clean starting slate between tests.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPR
OCESS_SSL_ENABLED"</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_SUPPORT_DOWNGRADE"</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_CERT_FILE"</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_KEY_FILE"</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringlite
ral">"LIBPROCESS_SSL_VERIFY_CERT"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_REQUIRE_CERT"</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_VERIFY_DEPTH"</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_CA_DIR"</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span c
lass="stringliteral">"LIBPROCESS_SSL_CA_FILE"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_CIPHERS"</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_ENABLE_SSL_V3"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_ENABLE_TLS_V1_0"</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::uns
etenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_ENABLE_TLS_V1_1"</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="namespaceos.html#a7471e14f4cbd7e23b5daa21e556f4eb5">os::unsetenv</a>(<span class="stringliteral">"LIBPROCESS_SSL_ENABLE_TLS_V1_2"</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// Copy the given map into the clean slate.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d6597536b111">foreachpair</a> (</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"
>name</a>, <span class="keyword">const</span> std::string& value, environment) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="namespaceos.html#ac0f608e2a32764327e38c53d0d51527d">os::setenv</a>(name, value);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// Make sure the library internally reflects the new environment variables.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  process::network::openssl::reinitialize();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00152"></a><span clas
s="lineno"> 152</span>  <span class="keywordtype">void</span> generate_keys_and_certs() {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// We store the allocated objects in these results so that we can</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// have a consolidated 'cleanup()' function. This makes all the</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// 'EXIT()' calls more readable and less error prone.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="classResult.html">Result<EVP_PKEY*></a> private_key = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classResult.html">Resul
t<X509*></a> certificate = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="classResult.html">Result<EVP_PKEY*></a> scrap_key = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classResult.html">Result<X509*></a> scrap_certificate = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a> = [&private_key, &certificate, &scrap_key, &scrap_certificate](</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span
class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a> abort_message = <a class="code" href="structNone.html">None</a>()) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (private_key.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) { EVP_PKEY_free(private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()); }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (certificate.isSome()) { X509_free(certificate.get()); }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (scrap_key.isSome()) { EVP_PKEY_free(scrap_key.get()); }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span
> (scrap_certificate.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) { X509_free(scrap_certificate.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()); }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// We abort here because failure during setup indicates that something</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// is horribly and irrecoverably wrong.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (abort_message.isSome()) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(abort_message
.get());</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  };</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Generate the authority key.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  private_key = process::network::openssl::generate_private_rsa_key();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (private_key.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="
stringliteral">"Could not generate private key: "</span> + private_key.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// Figure out the hostname that libprocess is advertising.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// Set the hostname of the certificate to this hostname so that</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// hostname verification of the certificate will pass.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="classTry.html">Try&l
t;std::string></a> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a> = <a class="code" href="namespacenet.html#a9228d72b9850d1b39d54b5784068fa1f">net::getHostname</a>(<a class="code" href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">process::address</a>().ip);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span> (hostname.isError()) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not determine hostname of libprocess: "</span> +</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  hostname.error());</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="
lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// Generate an authorized certificate.</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  certificate = process::network::openssl::generate_x509(</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(),</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(),</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  1,</div><div class="line"><a name="l00196"></a><span class="lin
eno"> 196</span>  365,</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  hostname.get(),</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="classnet_1_1IP.html">net::IP</a>(<a class="code" href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">process::address</a>().ip));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> (certificate.isError()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not generate certificate: "</span> + certificate.error());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> 
}</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Write the authority key to disk.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <a class="code" href="classTry.html">Try<Nothing></a> key_write =</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  process::network::openssl::write_key_file(private_key.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), key_path());</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (key_write.isError()) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="namespacecgro
ups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not write private key to disk: "</span> + key_write.error());</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// Write the authorized certificate to disk.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="classTry.html">Try<Nothing></a> certificate_write =</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  process::network::openssl::write_certificate_file(</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  certificate.get(),</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>
0; certificate_path());</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (certificate_write.isError()) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not write certificate to disk: "</span> +</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  certificate_write.error());</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// Generate a scrap key.</span></div><div class="li
ne"><a name="l00224"></a><span class="lineno"> 224</span>  scrap_key = process::network::openssl::generate_private_rsa_key();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> (scrap_key.isError()) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not generate a scrap private key: "</span> + scrap_key.error());</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Write the scrap key to disk.</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  key_write = proce
ss::network::openssl::write_key_file(</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  scrap_key.get(),</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  scrap_key_path());</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span> (key_write.isError()) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not write scrap key to disk: "</span> + key_write.error());</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span cl
ass="lineno"> 238</span>  <span class="comment">// Generate a scrap certificate.</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  scrap_certificate = process::network::openssl::generate_x509(</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  scrap_key.get(),</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  scrap_key.get());</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span> (scrap_certificate.isError()) {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not generate a scrap certificate: "</span> +</div><div class="line"><a
name="l00245"></a><span class="lineno"> 245</span>  scrap_certificate.error());</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">// Write the scrap certificate to disk.</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  certificate_write = process::network::openssl::write_certificate_file(</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  scrap_certificate.get(),</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  scrap_certificate_path());</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span
class="keywordflow">if</span> (certificate_write.isError()) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>(<span class="stringliteral">"Could not write scrap certificate to disk: "</span> +</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  certificate_write.error());</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// Since we successfully set up all our state, we call cleanup</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// without an abort message (so as not to abort).</span></div><div class="l
ine"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">cleanup</a>();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> };</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">class </span>SSLTest : <span class="keyword">public</span> <a class="code" href="classSSLTemporaryDirectoryTest.html">SSLTemporaryDirectoryTest</a>,</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">public</span> ::testing::WithParamInterface<const char*></div><div class="line"><a name="l00274"></a><span class
="lineno"> 274</span> {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  SSLTest() : data(<span class="stringliteral">"Hello World!"</span>) {}</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetUp()</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="classTemporaryDirectoryTest.html#a8c276b7f4a8ac1d5ca5d575d56fbea12">SSLTemporaryDirectoryTest::SetUp</a>();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  generate_keys_and_certs();</div><di
v class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classTry.html">Try<process::network::inet::Socket></a> setup_server(</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keyword">const</span> std::map<std::string, std::string>& <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a1396c5e3b0a179220de2792d74770ec2">environment</a>)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  set_environment_variables(environment);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 29
7</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<process::network::inet::Socket></a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a> =</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#a63ec4379f16d4f8dbf39f91b1be74a31">process::network::inet::Socket::create</a>(</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  process::network::internal::SocketImpl::Kind::SSL);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (create.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>
60; <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(create.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">process::network::inet::Socket</a> server = create.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// We need to explicitly bind to the address advertised by libprocess so the</span></div><div class="line"><a name="l00308"></a><span class="lineno
"> 308</span>  <span class="comment">// certificate we create in this test fixture can be verified.</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classTry.html">Try<process::network::inet::Address></a> <a class="code" href="namespaceprocess_1_1network.html#ad067110a4b38cc83785a43f49bf6c8e2">bind</a> =</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  server.bind(</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <a class="code" href="classprocess_1_1network_1_1inet_1_1Address.html">process::network::inet::Address</a>(<a class="code" href="classnet_1_1IP.html">net::IP</a>(<a class="code" href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">process::address</a>().ip), 0));</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class=
"lineno"> 313</span>  <span class="keywordflow">if</span> (bind.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(bind.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacecgroups_1_1event.html#a6f0a35d2d8f1381bc000001c94155393">listen</a> = server.listen(<a class="code" href="namespacerouting_1_1queueing_1_1statistics.html#afe8c444f1d99c4ed31c37e7dee3
fecfa">BACKLOG</a>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span> (listen.isError()) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(listen.error());</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">return</span> server;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="classTry.html">Try<process::Subprocess></a> l
aunch_client(</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">const</span> std::map<std::string, std::string>& environment,</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1network_1_1internal_1_1Socket.html">process::network::inet::Socket</a>& server,</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordtype">bool</span> use_ssl_socket)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<process::network::inet::Address></a> <a class="code" href="namespaceprocess_1_1network.html#a1987d4376ac5e2f04ad72e6c84c7569c">address</a> = server.<a clas
s="code" href="classprocess_1_1network_1_1internal_1_1Socket.html#ae0a90b8a9cbc66e8042905a34652f2db">address</a>();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span> (address.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(address.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// Set up arguments to be passed to the 'client-ssl' binary.</span></div><div class="line"><a name="
l00350"></a><span class="lineno"> 350</span>  <span class="keyword">const</span> std::vector<std::string> argv = {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="stringliteral">"ssl-client"</span>,</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="stringliteral">"--use_ssl="</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(use_ssl_socket),</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="stringliteral">"--server="</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(address-><a class="code" href="classprocess_1_1network_1_1inet_1_1Address.html#a3e0a3cf87d1bcdfdeb68a82a8595b0fd">ip</a>),</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="s
tringliteral">"--port="</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(address-><a class="code" href="classprocess_1_1network_1_1inet_1_1Address.html#ae3e7e66a36596662847c5a36b114af15">port</a>),</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="stringliteral">"--data="</span> + data};</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="namespacepath.html">path</a> = <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">os::realpath</a>(BUILD_DIR);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span> (!path.<a class="code" href="classResult.html#a85eaa52037223d7109
2e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Could not establish build directory path"</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="comment">// Explicitly set `LIBPROCESS_IP` in the subprocess to the same IP that was</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">// used to generate the hostname for SSL certificates. This ensures that</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="comment">// certificate verification can su
cceed.</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  std::map<std::string, std::string> full_environment(environment);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  full_environment[<span class="stringliteral">"LIBPROCESS_IP"</span>] = <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespaceprocess.html#afdecc57ab065ab5d354e728d0ef0ff34">process::address</a>().ip);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#aabc8d31889b5a325275d13d7bcef6a9c">process::subprocess</a>(</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="namespacepath.html#aa86b16a2171ce
c90bb3337930513ef0f">path::join</a>(path.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), <span class="stringliteral">"ssl-client"</span>),</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  argv,</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a>(),</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="classprocess_1_1Subprocess.html#a6af5024bd1932707893908fceb86ddad">process::Subprocess::PIPE</a>(),</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <a class="code" href="classprocess_1_1Subprocess.html#aaa6e1b76ef54ed6db34d595811122ce0">process::Subprocess::FD</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae2fe17
25bb5e9823d089c46b9ed5266e">STDERR_FILENO</a>),</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  full_environment);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1queueing_1_1statistics.html#afe8c444f1d99c4ed31c37e7dee3fecfa">BACKLOG</a> = 5;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keyword">const</span> std::string data;</div><div class="line"><
a name="l00381"></a><span class="lineno"> 381</span> };</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor">#endif // USE_SSL_SOCKET</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor">#endif // __PROCESS_SSL_TEST_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="realpath_8hpp_html"><div class="ttname"><a href="realpath_8hpp.html">realpath.hpp</a></div></div>
<div class="ttc" id="namespaceprocess_html_aabc8d31889b5a325275d13d7bcef6a9c"><div class="ttname"><a href="namespaceprocess.html#aabc8d31889b5a325275d13d7bcef6a9c">process::subprocess</a></div><div class="ttdeci">Try< Subprocess > subprocess(const std::string &path, std::vector< std::string > argv, const Subprocess::IO &in=Subprocess::FD(STDIN_FILENO), const Subprocess::IO &out=Subprocess::FD(STDOUT_FILENO), const Subprocess::IO &err=Subprocess::FD(STDERR_FILENO), const flags::FlagsBase *flags=nullptr, const Option< std::map< std::string, std::string >> &environment=None(), const Option< lambda::function< pid_t(const lambda::function< int()> &)>> &clone=None(), const std::vector< Subprocess::ParentHook > &parent_hooks={}, const std::vector< Subprocess::ChildHook > &child_hooks={})</div><div class="ttdoc">Forks a subprocess and execs the specified &#39;path&#39; with the specified &#
39;argv&#39;, redirecting stdin...</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp_source.html b/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp_source.html
index 4286c4f..92927bd 100644
--- a/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp_source.html
+++ b/content/api/latest/c++/libprocess_2include_2process_2windows_2jobobject_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="libprocess_2include_2process_2windows_2jobobject_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno">
6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="line
no"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __PROCESS_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __PROCESS_WINDOWS_JOBOBJECT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>></span></div><div clas
s="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span> <span class="comment">// For `SharedHandle`.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2windows_2jobobject_8hpp.html">stout/os/windows/jobobject.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#inclu
de <<a class="code" href="defer_8hpp.html">process/defer.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="future_8hpp.html">process/future.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="reap_8hpp.html">process/reap.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="subprocess_8hpp.html">process/subprocess.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div
class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <glog/logging.h></span> <span class="comment">// For `CHECK` macro.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classprocess_1_1internal_1_1JobObjectManager.html"> 37</a></span> <span class="keyword">class </s
pan><a class="code" href="classprocess_1_1internal_1_1JobObjectManager.html">JobObjectManager</a> : <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">Process</a><JobObjectManager></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classprocess_1_1internal_1_1JobObjectManager.html#abbd61e261fe0c9111f2df8af27f8f465"> 40</a></span>  <a class="code" href="classprocess_1_1internal_1_1JobObjectManager.html#abbd61e261fe0c9111f2df8af27f8f465">JobObjectManager</a>() : <a class="code" href="classprocess_1_1ProcessBase.html">ProcessBase</a>(<span class="stringliteral">"__job_object_manager"</span>) {}</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classproc
ess_1_1internal_1_1JobObjectManager.html#a1d7ed88d58a332060514091e8a7385d3"> 41</a></span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1internal_1_1JobObjectManager.html#a1d7ed88d58a332060514091e8a7385d3">~JobObjectManager</a>() {}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classprocess_1_1internal_1_1JobObjectManager.html#a96b0d960771d03b6682b20fd9f6142ea"> 43</a></span>  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1internal_1_1JobObjectManager.html#a96b0d960771d03b6682b20fd9f6142ea">manage</a>(</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00045"></
a><span class="lineno"> 45</span>  <span class="keyword">const</span> std::wstring& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">const</span> <a class="code" href="classSharedHandle.html">SharedHandle</a>& handle)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  jobs.emplace(pid, JobData{<a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>, handle});</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="namespaceprocess.html#a8225ae5aa1b4963bb8413312282a91be">process::reap</a>(pid)</div><div class="line"><a na
me="l00051"></a><span class="lineno"> 51</span>  .<a class="code" href="classprocess_1_1Future.html#a71bde220aed3c725cef2040f63adf42a">onAny</a>(<a class="code" href="namespaceprocess.html#a8b27a2ef76eb133bf0ce7a5eea4fb77c">defer</a>(<span class="keyword">self</span>(), &<a class="code" href="namespacecgroups.html#a12d210f286e5fcf7993c0c90b9459606">Self::cleanup</a>, lambda::_1, pid));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classprocess_1_1internal_1_1JobObjectManager.html#adc672b14adbfe22f390c518457d60b2b"> 55</a></span>  <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1internal_1_1JobObjectManag
er.html#adc672b14adbfe22f390c518457d60b2b">cleanup</a>(<a class="code" href="classprocess_1_1Future.html">Future</a><<a class="code" href="classOption.html">Option<int></a>> exit_code, <span class="keyword">const</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  CHECK(!exit_code.isPending());</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  CHECK(!exit_code.isDiscarded());</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classTry.html">Try<Nothing></a> killJobResult = <a class="code" href="namespaceos.html#a8181969d159a69d91d1e265f1bb1ed
dc">os::kill_job</a>(jobs.at(pid).handle);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  CHECK(!killJobResult.isError())</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  << <span class="stringliteral">"Failed to kill job object: "</span> << killJobResult.error();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Finally, erase the `JobData`, closing the last handle to the job object.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// All functionality requiring a live job object handle (but possibly a</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// dead process) must happen prior to this, e.g. in a ano
ther parent hook.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  jobs.erase(pid);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">struct </span>JobData {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  std::wstring <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classSharedHandle.html">SharedHandle</a> handle;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  };</div><
div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::map<pid_t, JobData> jobs;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// Global job object manager process. Defined in `process.cpp`.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">extern</span> <a class="code" href="structprocess_1_1PID.html">PID<JobObjectManager></a> <a class="code" href="namespaceprocess_1_1internal.html#a05a2591dfe6a59e00bad2a5c9b6c8db3">job_object_manager</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span cl
ass="lineno"> 82</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keyword">inline</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a> Subprocess::ParentHook::CREATE_JOB() {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Subprocess_1_1ParentHook.html">Subprocess::ParentHook</a>([](<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid) -> <a class="code" href="classTry.html">Try<Nothing></a> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// NOTE: There are two very important parts to
this hook. First, Windows</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// does not have a process hierarchy in the same sense that Unix does, so</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// in order to be able to kill a task, we have to put it in a job object.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// Then, when we terminate the job object, it will terminate all the</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// processes in the task (including any processes that were subsequently</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// created by any process in this task). Second, the lifetime of the job</span></div><div class="line
"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// object is greater than the lifetime of the processes it contains. Thus</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// the job object handle is explicitly owned by the global job object</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// manager process.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classTry.html">Try<std::wstring></a> <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a> = <a class="code" href="namespaceos.html#a4c477c8086d4b3004c170ee05e5be9bf">os::name_job</a>(pid);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (name.<a class="code" href="classTry.htm
l#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(name.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// This creates a named job object in the Windows kernel.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// This handle must remain in scope (and open) until</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// a running process is assigned to it.</span></di
v><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classTry.html">Try<SharedHandle></a> handle = <a class="code" href="namespaceos.html#a88a1637a0168d78faad2ac5b82e5cc4d">os::create_job</a>(name.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (handle.isError()) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(handle.error());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// This actually assigns the process
`pid` to the job object.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="classTry.html">Try<Nothing></a> result = <a class="code" href="namespaceos.html#a706dc9d1287978f358a9a23b77037fb0">os::assign_job</a>(handle.get(), pid);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (result.isError()) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(result.error());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Save the handle to the job object to ensure the object remains</span></d
iv><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// open for the entire lifetime of the agent process, and is closed</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// when the process is reaped.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="namespaceprocess_1_1internal.html#ac34bccdf47fcfa46cedf2a03771eb221">dispatch</a>(</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="namespaceprocess_1_1internal.html#a05a2591dfe6a59e00bad2a5c9b6c8db3">process::internal::job_object_manager</a>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  &<a class="code" href="classprocess_1_1internal_1_1JobObjectManager.html#a96b0d960771d03b6682b20fd9f6142ea">process::internal::JobObjectManager::manage</a>,</di
v><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  pid,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  name.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  handle.get());</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  });</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> } <span class="co
mment">// namespace process {</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif // __PROCESS_WINDOWS_JOBOBJECT_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< int ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classSharedHandle_html"><div class="ttname"><a href="classSharedHandle.html">SharedHandle</a></div><div class="ttdef"><b>Definition:</b> windows.hpp:72</div></div>
[47/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2net_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2net_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2net_8hpp_source.html
index 16bbbcc..10eff53 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2net_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2net_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2net_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <
span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</spa
n> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_NET_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_NET_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <netdb.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#inclu
de <stdint.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <arpa/inet.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class=
"preprocessor">#ifdef __APPLE__</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <net/if.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <net/if_dl.h></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <net/if_types.h></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#endif // __APPLE__</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#ifdef __FreeBSD__</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <ifaddrs.h></span></div><div class="li
ne"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif // __FreeBSD__</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Note: Header grouping and ordering is considered before</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// inclusion/exclusion by platform.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <sys/param.h></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00043"></a><span cl
ass="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <curl/curl.h></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l000
51"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2ip_8hpp.html">stout/ip.hpp</a>></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a
name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include <<a class="code" href="open_8hpp.html">stout/os/open.hpp</a>></span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span
> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_2net_8hpp.html">stout/windows/net.hpp</a>></span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2posix_2net_8hpp.html">stout/posix/net.hpp</a>></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l
00069"></a><span class="lineno"> 69</span> <span class="comment">// Network utilities.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// Initializes libraries that net:: functions depend on, in a</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// thread-safe way. This does not have to be called explicitly by</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// the user of any functions in question. They will call this</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// thems
elves by need.</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="namespacenet.html#a418ace8fe7728f38b2124b5445e52775"> 76</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacenet.html#a418ace8fe7728f38b2124b5445e52775">initialize</a>()</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// We use a static struct variable to initialize in a thread-safe</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// way, at least with respect to calls within net::*, since there</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// is no way to guarantee that another library is not concurrently</span></div><div class="line
"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// initializing CURL. Thread safety is provided by the fact that</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// the value 'curl' should get constructed (i.e., the CURL</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// constructor invoked) in a thread safe way (as of GCC 4.3 and</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// required for C++11).</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">struct </span>CURL</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  CURL()</div><div class="line"><a name="l00
088"></a><span class="lineno"> 88</span>  {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// This is the only one function in libcurl that is not deemed</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// thread-safe. (And it must be called at least once before any</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// other libcurl function is used.)</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  curl_global_init(CURL_GLOBAL_ALL);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  };</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"><
/a><span class="lineno"> 96</span>  <span class="keyword">static</span> CURL curl;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// Downloads the header of the specified HTTP URL with a HEAD request</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// and queries its "content-length" field. (Note that according to the</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// HTTP specification there is no guarantee that this field contains</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="c
omment">// any useful value.)</span></div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="namespacenet.html#aa3d8cac2c33d11239203ab0f06aa5a4f"> 104</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespacenet.html#aa3d8cac2c33d11239203ab0f06aa5a4f">contentLength</a>(<span class="keyword">const</span> std::string& url)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="namespacenet.html#a418ace8fe7728f38b2124b5445e52775">initialize</a>();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  CURL* curl = curl_easy_init();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span
class="keywordflow">if</span> (curl == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  curl_easy_cleanup(curl);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to initialize libcurl"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  curl_easy_setopt(curl, CURLOPT_URL, url.c_str());</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, <span class="keyword">true</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&
#160; curl_easy_setopt(curl, CURLOPT_HEADER, 1);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  curl_easy_setopt(curl, CURLOPT_NOBODY, 1);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  CURLcode curlErrorCode = curl_easy_perform(curl);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> (curlErrorCode != 0) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  curl_easy_cleanup(curl);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(curl_easy_strerror(curlErrorCode));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><
span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">double</span> result;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &result);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  curl_easy_cleanup(curl);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (result < 0) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"No URL content-length available"</sp
an>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(uint64_t(result));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// Returns the HTTP response code resulting from attempting to</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// download the specified HTTP or FTP URL into a file at the specified</span></div><div class=
"line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// path. The `stall_timeout` parameter controls how long the download</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// waits before aborting when the download speed keeps below 1 byte/sec.</span></div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="namespacenet.html#ace14e175f117e4e3e73f164538bcfea2"> 142</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<int></a> <a class="code" href="namespacenet.html#ace14e175f117e4e3e73f164538bcfea2">download</a>(</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> std::string& url,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">const</span> std::string& <a class="code" href
="namespacepath.html">path</a>,</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<Duration></a>& stall_timeout = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="namespacenet.html#a418ace8fe7728f38b2124b5445e52775">initialize</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="classTry.html">Try<int_fd></a> fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a>(</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  path,</div><div class="line"><a
name="l00151"></a><span class="lineno"> 151</span>  O_CREAT | O_WRONLY | <a class="code" href="windows_2open_8hpp.html#ae477ca5323e49dcb433426280be75067">O_CLOEXEC</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a> | <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a90d7514882640a8cd7b8da14138103b7">S_IROTH</a>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span> (fd.<a class="code" href="classTry
.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(fd.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  CURL* curl = curl_easy_init();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (curl == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  curl_easy_cleanup(curl);</div><div class="line"
><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to initialize libcurl"</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  curl_easy_setopt(curl, CURLOPT_URL, url.c_str());</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, <span class="keyword">nullptr</span>);</div><div class="line"><a na
me="l00168"></a><span class="lineno"> 168</span>  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, <span class="keyword">true</span>);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// We don't bother introducing a `os::fdopen()` since this is the</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// only place we use `fdopen()` in the entire codebase as of writing</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// this comment.</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// This explicitly allocates a C
RT integer file descriptor, which</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// when closed, also closes the underlying handle, so we do not call</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// `CloseHandle()` (or `os::close()`).</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> crt = fd->crt();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// We open in "binary" mode on Windows to avoid line-ending translation.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  FILE* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a> = ::_fdopen(crt, <span class="stringliteral">"wb"</s
pan>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span> (file == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  curl_easy_cleanup(curl);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// NOTE: This is not `os::close()` because we allocated a CRT int</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// fd earlier.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  ::_close(crt);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to open file handle of '"</span> + path + <span class="st
ringliteral">"'"</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  FILE* file = ::fdopen(fd.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), <span class="stringliteral">"w"</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (file == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  curl_easy_cleanup(curl);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd.<a class="code" href="classTry.html#a8bc7f43
e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to open file handle of '"</span> + path + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class=
"keywordflow">if</span> (stall_timeout.isSome()) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// Set the options to abort the download if the speed keeps below</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// 1 byte/sec during the timeout. See:</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// https://curl.haxx.se/libcurl/c/CURLOPT_LOW_SPEED_LIMIT.html</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// https://curl.haxx.se/libcurl/c/CURLOPT_LOW_SPEED_TIME.html</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1L);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  curl_easy_setopt(</div><d
iv class="line"><a name="l00205"></a><span class="lineno"> 205</span>  curl, CURLOPT_LOW_SPEED_TIME, static_cast<long>(stall_timeout->secs()));</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  CURLcode curlErrorCode = curl_easy_perform(curl);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span> (curlErrorCode != 0) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  curl_easy_cleanup(curl);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// NOTE: `fclose()` also closes the associated file descriptor, so</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> 
<span class="comment">// we do not call `close()`.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ::fclose(file);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(curl_easy_strerror(curlErrorCode));</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">long</span> code;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  curl_easy_cleanup(curl);</div><div class="line"><a name="l00220"></a><span class="lineno"> 2
20</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span> (::fclose(file) != 0) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to close file handle of '"</span> + path + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> <a class="code" href="classTry.html#ac6304ce9dfd0042726f8b813ac64f06a">Try<int>::some</a>(code);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="l
ine"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif // __STOUT_NET_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Duration ></a></div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a55fad1c3746e1b8a6a00c10998e91d91"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a55fad1c3746e1b8a6a00c10998e91d91">S_IRGRP</a></div><div class="ttdeci">const mode_t S_IRGRP</div><div class="ttdef"><b>Definition:</b> windows.hpp:313</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
@@ -62,7 +62,7 @@
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_aead39710af2622ee9b0d412f62e90aa5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a></div><div class="ttdeci">const mode_t S_IWUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:306</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_2net_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_2net_8hpp.html">net.hpp</a></div></div>
<div class="ttc" id="namespaceos_html_aaf5d5468adc1b85cf9bb7126e70807ca"><div class="ttname"><a href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a></div><div class="ttdeci">Try< int_fd > open(const std::string &path, int oflag, mode_t mode=0)</div><div class="ttdef"><b>Definition:</b> open.hpp:35</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a66cff14a0638cde9f422c7a4b0938e61"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a></div><div class="ttdeci">const mode_t S_IRUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:305</div></div>
<div class="ttc" id="close_8hpp_html"><div class="ttname"><a href="close_8hpp.html">close.hpp</a></div></div>
<div class="ttc" id="namespacenet_html_a418ace8fe7728f38b2124b5445e52775"><div class="ttname"><a href="namespacenet.html#a418ace8fe7728f38b2124b5445e52775">net::initialize</a></div><div class="ttdeci">void initialize()</div><div class="ttdef"><b>Definition:</b> net.hpp:76</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2linux_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2linux_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2linux_8hpp_source.html
index a8cbc3f..fa967f9 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2linux_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2os_2linux_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2os_2linux_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&
#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 1
2</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_LINUX_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_LINUX_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This file contains Linux-only OS utilities.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __linux__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/linux.hpp is only available on Linux systems."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif
// __linux__</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <sys/mman.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <sys/types.h></span> <span class="comment">// For pid_t.</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <queue></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00027"></a><span class="l
ineno"> 27</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00033"></a><span
class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="proc_8hpp.html">stout/proc.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>
 <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// Helper for clone() which expects an int(void*).</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">childMain</a>(<span class="keywordtype">void</span>* _func)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">const</span> lambda::function<int()>* func =</div><div class="line"
><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">static_cast<</span><span class="keyword">const </span>lambda::function<int()>*<span class="keyword">></span> (_func);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> (*func)();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Helper that captures information about a stack to be used when</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// invoking clone.</span
></div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classos_1_1Stack.html"> 54</a></span> <span class="keyword">class </span><a class="code" href="classos_1_1Stack.html">Stack</a></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// 8 MiB is the default for "ulimit -s" on OSX and Linux.</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classos_1_1Stack.html#af5c1f11af9592d666dd1705d5393d4d0"> 58</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">size_t</span> <a class="code" href="classos_1_1Stack.html#af5c1f11af9592d666dd1705d5393d4d0">DEFAULT_SIZE</a> = 8 * 1024 * 1024;</div><div class="
line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Allocate a stack. Note that this is NOT async signal safe, nor</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// safe to call between fork and exec.</span></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classos_1_1Stack.html#a248fb0d3d52e903c887890d0155f70b7"> 62</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Stack></a> <a class="code" href="classos_1_1Stack.html#a248fb0d3d52e903c887890d0155f70b7">create</a>(<span class="keywordtype">size_t</span> size)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="cla
ssos_1_1Stack.html">Stack</a> stack(size);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (!stack.<a class="code" href="classos_1_1Stack.html#ae52b904f7729658bee38b8fe9aeb82c9">allocate</a>()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> stack;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="
lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classos_1_1Stack.html#aa892eb721034afeb9a97a28ac6d8fd41"> 73</a></span>  <span class="keyword">explicit</span> <a class="code" href="classos_1_1Stack.html#aa892eb721034afeb9a97a28ac6d8fd41">Stack</a>(<span class="keywordtype">size_t</span> size_) : size(size_) {}</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Allocate the stack using mmap. We avoid malloc because we want</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// this to be safe to use between fork and exec where malloc might</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// deadlock. Returns false and sets `errno` on failure.</sp
an></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classos_1_1Stack.html#ae52b904f7729658bee38b8fe9aeb82c9"> 78</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classos_1_1Stack.html#ae52b904f7729658bee38b8fe9aeb82c9">allocate</a>()</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceflags.html">flags</a> = MAP_PRIVATE | MAP_ANONYMOUS;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#if defined(MAP_STACK)</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  flags |= MAP_STACK;</div><div class="line"><a name="l00084"></a><span class="lineno">
84</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  address = ::mmap(<span class="keyword">nullptr</span>, size, PROT_READ | PROT_WRITE, flags, -1, 0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (address == MAP_FAILED) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="lin
e"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Explicitly free the stack.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// The destructor won't free the allocated stack.</span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classos_1_1Stack.html#aa5b0858e49e36141b299ef45e6d1b265"> 96</a></span>  <span class="keywordtype">void</span> <a class="code" href="classos_1_1Stack.html#aa5b0858e49e36141b299ef45e6d1b265">deallocate</a>()</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  PCHECK(::munmap(address, size) == 0);</div><div class="lin
e"><a name="l00099"></a><span class="lineno"> 99</span>  address = MAP_FAILED;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Stack grows down, return the first usable address.</span></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classos_1_1Stack.html#a15a1637e699c755a2cd2cef394ec216f"> 103</a></span>  <span class="keywordtype">char</span>* <a class="code" href="classos_1_1Stack.html#a15a1637e699c755a2cd2cef394ec216f">start</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return<
/span> address == MAP_FAILED</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  ? <span class="keyword">nullptr</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  : (<span class="keyword">static_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(address) + size);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">size_t</span> size;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">void</span>* address = MAP_FAILED;</div><div class="line"><a name="l00113"></a><
span class="lineno"> 113</span> };</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceos_1_1signal__safe.html"> 116</a></span> <span class="keyword">namespace </span>signal_safe {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespaceos_1_1signal__safe.html#a0f7ad48cdb581ef66ce15257f0e8947a"> 119</a></span> <span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="namespaceos.html#aa2af722f5663b0e63d1839a468b472dd">clone</a>(</div><di
v class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">const</span> <a class="code" href="classos_1_1Stack.html">Stack</a>& stack,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceflags.html">flags</a>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">const</span> lambda::function<<span class="keywordtype">int</span>()>& func)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="namespaceos.html#aa2af722f5663b0e63d1839a468b472dd">return ::clone</a>(childMain, stack.<a class="code" href="classos_1_1Stack.html#a15a1637e699c755a2cd2cef394ec216f">start</a>(), <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae8
5c6">flags</a>, (<span class="keywordtype">void</span>*) &func);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> } <span class="comment">// namespace signal_safe {</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="namespaceos.html#aa2af722f5663b0e63d1839a468b472dd"> 130</a></span> <span class="keyword">inline</span> <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> <a class="code" href="namespaceos.html#aa2af722f5663b0e63d1839a468b472dd">clone</a>(</div><div class="line"><a name="l00131"></a><span
class="lineno"> 131</span>  <span class="keyword">const</span> lambda::function<<span class="keywordtype">int</span>()>& func,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceflags.html">flags</a>)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// Stack for the child.</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">//</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// NOTE: We need to allocate the stack dynamically. This is because</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// glibc's 'clone' will modify t
he stack passed to it, therefore the</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// stack must NOT be shared as multiple 'clone's can be invoked</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// simultaneously.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classos_1_1Stack.html">Stack</a> stack(<a class="code" href="classos_1_1Stack.html#af5c1f11af9592d666dd1705d5393d4d0">Stack::DEFAULT_SIZE</a>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (!stack.<a class="code" href="classos_1_1Stack.html#ae52b904f7729658bee38b8fe9aeb82c9">allocate</a>()) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</s
pan>  <span class="comment">// TODO(jpeach): In MESOS-8155, we will return an</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// ErrnoError() here, but for now keep the interface</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// compatible.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = <a class="code" href="namespaceos_1_1signal__safe.html#a0f7ad48cdb581ef66ce15257f0e8947a">sig
nal_safe::clone</a>(stack, flags, func);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Given we allocated the stack ourselves, there are two</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// circumstances where we need to delete the allocated stack to</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// avoid a memory leak:</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">//</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// (1) Failed to clone.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">//</span></div><div cla
ss="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// (2) CLONE_VM is not set implying ::clone will create a process</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// which runs in its own copy of the memory space of the</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// calling process. If CLONE_VM is set ::clone will create a</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// thread which runs in the same memory space with the calling</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// process, in which case we don't want to call delete!</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">//</span><
/div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// TODO(jpeach): In case (2) we will leak the stack memory.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (pid < 0 || !(flags & CLONE_VM)) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  stack.<a class="code" href="classos_1_1Stack.html#aa5b0858e49e36141b299ef45e6d1b265">deallocate</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> pid;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <
/div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Page size, used for memory accounting.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> pageSize = <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984
a">os::pagesize</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// Number of clock ticks per second, used for cpu accounting.</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">long</span> ticks = sysconf(_SC_CLK_TCK);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (ticks <= 0) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to get sysconf(_SC_CLK_TCK)"</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div
><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> <a class="code" href="classResult.html">Result<proc::ProcessStatus></a> <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a> = <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a>(pid);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span> (status.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(status.<a class="code" href="classResult.html#a521a
df96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (status.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// There are known bugs with invalid utime / stime values coming</span></div><div class="line"><a name="l00
194"></a><span class="lineno"> 194</span>  <span class="comment">// from /proc/<pid>/stat on some Linux systems.</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// See the following thread for details:</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// http://mail-archives.apache.org/mod_mbox/incubator-mesos-dev/</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// 201307.mbox/%3CCA+2n2er-Nemh0CsKLbHRkaHd=YCrNt17NLUPM2=TtEfsKOw4</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Rg@mail.gmail.com%3E</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// These are similar reports:</span></div><div class="line"><a name="l00200"></a><span class="lineno">
200</span>  <span class="comment">// http://lkml.indiana.edu/hypermail/linux/kernel/1207.1/01388.html</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1023214</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="classTry.html">Try<Duration></a> <a class="code" href="namespaceos.html#a818327458964860a86fc8964e4795b4d">utime</a> = <a class="code" href="classDuration.html#a70f3ccdaba8dd6d0a1c2eddde1d1327a">Duration::create</a>(status-><a class="code" href="structproc_1_1ProcessStatus.html#a9095310f297abb51a4391a9f7c5f1b2d">utime</a> / (<span class="keywordtype">double</span>)ticks);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="classTry.html">Try<Duration></a> stime = <a class="code" href="classDuration.html#a70f3ccdaba8dd6d0
a1c2eddde1d1327a">Duration::create</a>(status-><a class="code" href="structproc_1_1ProcessStatus.html#ab4802140d5c18cebaf83e738b5e8507d">stime</a> / (<span class="keywordtype">double</span>)ticks);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// The command line from 'status->comm' is only "arg0" from "argv"</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// (i.e., the canonical executable name). To get the entire command</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// line we grab '/proc/[pid]/cmdline'.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="classResult.html">Result<std::string></a> <a
class="code" href="namespaceproc.html#a4ba22836c31ab565d5670129aac0a34d">cmdline</a> = <a class="code" href="namespaceproc.html#a4ba22836c31ab565d5670129aac0a34d">proc::cmdline</a>(pid);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <a class="code" href="structos_1_1Process.html">Process</a>(</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  status-><a class="code" href="structproc_1_1ProcessStatus.html#afd1efc7ade695e958b4f523cb4c65bbd">pid</a>,</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  status-><a class="code" href="structproc_1_1ProcessStatus.html#ad0a83e9d469cab01eb3ceb70ab7f108d">ppid</a>,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  status-><a class="code" href="structproc_1_1Proc
essStatus.html#a3ae685cf9da43d9751f12dbbd7384c18">pgrp</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  status-><a class="code" href="structproc_1_1ProcessStatus.html#a236d914363d3ca4e748a6d539dcf28d5">session</a>,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classBytes.html">Bytes</a>(status-><a class="code" href="structproc_1_1ProcessStatus.html#a42c4886162f88b8efd2422df00083955">rss</a> * pageSize),</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  utime.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() ? utime.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() : <a class="code" href="classOption.html#aca73609603df4687dba70c2a5df47ef8">Option<Duration>::none</a>(),</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  stime
.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() ? stime.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() : <a class="code" href="classOption.html#aca73609603df4687dba70c2a5df47ef8">Option<Duration>::none</a>(),</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  cmdline.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>() ? cmdline.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>() : status-><a class="code" href="structproc_1_1ProcessStatus.html#aa33c57506955b0c77587a6152840fb3a">comm</a>,</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  status-><a class="code" href="structproc_1_1ProcessStatus.html#ac8b4bc0e80bf560b45e2bba608b9a764">state</a> == <span class="charliteral">'Z'</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220
</span> }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceproc.html#a810141e1502dd8b9a7a410da6caf7ed7">proc::pids</a>();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno
"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment">// Returns the total size of main and free memory.</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Memory></a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="structos_1_1Memory.html">Memory</a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">struct </span>sysinfo info;</div><div class
="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (sysinfo(&info) != 0) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor"># if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 3, 23)</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  memory.<a class="code" href="structos_1_1Memory.html#a3670204f7fb13a96ca0e278f49b91282">total</a> = <a class="code" href="classBytes.html">Bytes</a>(info.totalram * info.mem_unit);</div><div class="line"><a name="l00241"></a><span class="lineno">
241</span>  memory.<a class="code" href="structos_1_1Memory.html#ab447e8e30892e0d5f0e3a976e6d80cde">free</a> = <a class="code" href="classBytes.html">Bytes</a>(info.freeram * info.mem_unit);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  memory.<a class="code" href="structos_1_1Memory.html#a00f1a2071778c1ce10eff411fae079d5">totalSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(info.totalswap * info.mem_unit);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  memory.<a class="code" href="structos_1_1Memory.html#a99857d2d965390fe2e88f417037dce55">freeSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(info.freeswap * info.mem_unit);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor"># else</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  memory.<a class="code" href="structos_1_1Memory.h
tml#a3670204f7fb13a96ca0e278f49b91282">total</a> = <a class="code" href="classBytes.html">Bytes</a>(info.totalram);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  memory.<a class="code" href="structos_1_1Memory.html#ab447e8e30892e0d5f0e3a976e6d80cde">free</a> = <a class="code" href="classBytes.html">Bytes</a>(info.freeram);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  memory.<a class="code" href="structos_1_1Memory.html#a00f1a2071778c1ce10eff411fae079d5">totalSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(info.totalswap);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  memory.<a class="code" href="structos_1_1Memory.html#a99857d2d965390fe2e88f417037dce55">freeSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(info.freeswap);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor"># endif</span><
/div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor">#endif // __STOUT_OS_LINUX_HPP__</span></div><div class="ttc" id="structproc_1_1ProcessStatus_html_a3ae685cf9da43d9751f12dbbd7384c18"><div class="ttname"><a href="structproc_1_1ProcessStatus.html#a3ae685cf9d
a43d9751f12dbbd7384c18">proc::ProcessStatus::pgrp</a></div><div class="ttdeci">const pid_t pgrp</div><div class="ttdef"><b>Definition:</b> proc.hpp:130</div></div>
<div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classos_1_1Stack_html_aa5b0858e49e36141b299ef45e6d1b265"><div class="ttname"><a href="classos_1_1Stack.html#aa5b0858e49e36141b299ef45e6d1b265">os::Stack::deallocate</a></div><div class="ttdeci">void deallocate()</div><div class="ttdef"><b>Definition:</b> linux.hpp:96</div></div>
<div class="ttc" id="classos_1_1Stack_html_a15a1637e699c755a2cd2cef394ec216f"><div class="ttname"><a href="classos_1_1Stack.html#a15a1637e699c755a2cd2cef394ec216f">os::Stack::start</a></div><div class="ttdeci">char * start() const </div><div class="ttdef"><b>Definition:</b> linux.hpp:103</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
@@ -64,7 +64,7 @@
<div class="ttc" id="namespaceproc_html_a34396c6140a28f583dc13fee3c3c35d4"><div class="ttname"><a href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a></div><div class="ttdeci">Result< ProcessStatus > status(pid_t pid)</div><div class="ttdef"><b>Definition:</b> proc.hpp:166</div></div>
<div class="ttc" id="structproc_1_1ProcessStatus_html_ad0a83e9d469cab01eb3ceb70ab7f108d"><div class="ttname"><a href="structproc_1_1ProcessStatus.html#ad0a83e9d469cab01eb3ceb70ab7f108d">proc::ProcessStatus::ppid</a></div><div class="ttdeci">const pid_t ppid</div><div class="ttdef"><b>Definition:</b> proc.hpp:129</div></div>
<div class="ttc" id="classDuration_html_a70f3ccdaba8dd6d0a1c2eddde1d1327a"><div class="ttname"><a href="classDuration.html#a70f3ccdaba8dd6d0a1c2eddde1d1327a">Duration::create</a></div><div class="ttdeci">static Try< Duration > create(double seconds)</div><div class="ttdef"><b>Definition:</b> duration.hpp:418</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
[29/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/os_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/os_8hpp_source.html b/content/api/latest/c++/os_8hpp_source.html
index 1e985b2..1629181 100644
--- a/content/api/latest/c++/os_8hpp_source.html
+++ b/content/api/latest/c++/os_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="os_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></di
v><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a
name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <limits.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <stddef.h></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> 
<span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <glog/logging.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <queue></span></div><div class="line"><a name="l00028"></a><span cla
ss="lineno"> 28</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="duration_8hpp.html">stout/duration.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="prepro
cessor">#include <<a class="code" href="exit_8hpp.html">stout/exit.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <<a cl
ass="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2version_8hpp.html">stout/version.hpp</a>></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"
></a><span class="lineno"> 45</span> <span class="preprocessor">#include <<a class="code" href="access_8hpp.html">stout/os/access.hpp</a>></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <<a class="code" href="bootid_8hpp.html">stout/os/bootid.hpp</a>></span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <<a class="code" href="chdir_8hpp.html">stout/os/chdir.hpp</a>></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <<a class="code" href="chroot_8hpp.html">stout/os/chroot.hpp</a>></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <<a class="code" href="dup_8hpp.html">stout/os/dup.hpp</a>></span></div><div class="line"><a name="l00050"></a><span clas
s="lineno"> 50</span> <span class="preprocessor">#include <<a class="code" href="exists_8hpp.html">stout/os/exists.hpp</a>></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <<a class="code" href="fcntl_8hpp.html">stout/os/fcntl.hpp</a>></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <<a class="code" href="getenv_8hpp.html">stout/os/getenv.hpp</a>></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <<a class="code" href="kill_8hpp.html">stout/os/kill.hpp</a>></span></div><div class="line"><a name="l00055"></a><span class="lineno">
55</span> <span class="preprocessor">#include <<a class="code" href="ls_8hpp.html">stout/os/ls.hpp</a>></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include <<a class="code" href="lseek_8hpp.html">stout/os/lseek.hpp</a>></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include <<a class="code" href="mkdir_8hpp.html">stout/os/mkdir.hpp</a>></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include <<a class="code" href="mkdtemp_8hpp.html">stout/os/mkdtemp.hpp</a>></span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <<a class="code" href="mktemp_8hpp.html">stout/os/mktemp.hpp</a>></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
<span class="preprocessor">#include <<a class="code" href="os_2os_8hpp.html">stout/os/os.hpp</a>></span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include <<a class="code" href="pipe_8hpp.html">stout/os/pipe.hpp</a>></span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#include <<a class="code" href="rename_8hpp.html">stout/os/rename.hpp</a>></span></div><div class="line"><a name="l00065"></a><span class="lineno">
65</span> <span class="preprocessor">#include <<a class="code" href="rm_8hpp.html">stout/os/rm.hpp</a>></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#include <<a class="code" href="rmdir_8hpp.html">stout/os/rmdir.hpp</a>></span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#include <<a class="code" href="shell_8hpp.html">stout/os/shell.hpp</a>></span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#include <<a class="code" href="stat_8hpp.html">stout/os/stat.hpp</a>></span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#include <<a class="code" href="su_8hpp.html">stout/os/su.hpp</a>></span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="
preprocessor">#include <<a class="code" href="temp_8hpp.html">stout/os/temp.hpp</a>></span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#include <<a class="code" href="touch_8hpp.html">stout/os/touch.hpp</a>></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#include <<a class="code" href="utime_8hpp.html">stout/os/utime.hpp</a>></span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#include <<a class="code" href="wait_8hpp.html">stout/os/wait.hpp</a>></span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#include <<a class="code" href="xattr_8hpp.html">stout/os/xattr.hpp</a>></span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l
00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#include <<a class="code" href="argv_8hpp.html">stout/os/raw/argv.hpp</a>></span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2raw_2environment_8hpp.html">stout/os/raw/environment.hpp</a>></span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// For readability, we minimize the number of #ifdef blocks in the code by</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// splitting platform specific system calls into separate directories.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#ifdef __WINDO
WS__</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#include <<a class="code" href="windows_2os_8hpp.html">stout/windows/os.hpp</a>></span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#include <<a class="code" href="posix_2os_8hpp.html">stout/posix/os.hpp</a>></span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">namespace </span><a class="code" href="namespa
ceos.html">os</a> {</div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries.html"> 89</a></span> <span class="keyword">namespace </span>libraries {</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries_1_1Library.html"> 90</a></span> <span class="keyword">namespace </span>Library {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Library prefix; e.g., the `lib` in `libprocess`. NOTE: there is no prefix</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// on Windows; `libprocess.a` would be `process.lib`.</span></div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries_1_1Library.html#ab0e1a0e311049b6d68
5de1068e8f4690"> 94</a></span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1libraries_1_1Library.html#ab0e1a0e311049b6d685de1068e8f4690">prefix</a> =</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="stringliteral">""</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="stringliteral">"lib"</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><d
iv class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// The suffix for a shared library; e.g., `.so` on Linux.</span></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries_1_1Library.html#ac06ca4ef39ca9d87015871b014454777"> 103</a></span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1libraries_1_1Library.html#ac06ca4ef39ca9d87015871b014454777">extension</a> =</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#ifdef __APPLE__</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="stringliteral">".dylib"</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span cl
ass="preprocessor">#elif defined(__WINDOWS__)</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="stringliteral">".dll"</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="stringliteral">".so"</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#endif // __APPLE__</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// The name of the environment variable that contains paths on which the</span></div><div class="line"><a name="l00114"></a><span cl
ass="lineno"> 114</span> <span class="comment">// linker should search for libraries. NOTE: Windows does not have an</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// environment variable that controls the paths the linker searches through.</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries_1_1Library.html#a0be33f2af5cb384f4d110fb8b6f09a30"> 116</a></span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1libraries_1_1Library.html#a0be33f2af5cb384f4d110fb8b6f09a30">ldPathEnvironmentVariable</a> =</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#ifdef __APPLE__</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="stringliteral">"DYLD_LIBRARY_PATH"<
/span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#elif defined(__WINDOWS__)</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="stringliteral">""</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="stringliteral">"LD_LIBRARY_PATH"</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> } <span class="comment">// namespace Library {</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><
div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// Returns the full library name by adding prefix and extension to</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment">// library name.</span></div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries.html#ad96fd3dcc70a77aba1380eec5a86dc31"> 129</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespaceos_1_1libraries.html#ad96fd3dcc70a77aba1380eec5a86dc31">expandName</a>(<span class="keyword">const</span> std::string& libraryName)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos_1_1libraries_1_1Library.html#ab0e1a0e311049b6d685de1068e8f4690
">Library::prefix</a> + libraryName + <a class="code" href="namespaceos_1_1libraries_1_1Library.html#ac06ca4ef39ca9d87015871b014454777">Library::extension</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// Returns the current value of LD_LIBRARY_PATH environment variable.</span></div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries.html#a41b3cb8b32c32ab2abf7a7aa62de9f18"> 136</a></span> <span class="keyword">inline</span> std::string <a class="code" href="namespaceos_1_1libraries.html#a41b3cb8b32c32ab2abf7a7aa62de9f18">paths</a>()</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>
0;{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="namespacepath.html">path</a> = <a class="code" href="namespaceos.html#add69634db977768c56f0367b4bb03cd5">getenv</a>(<a class="code" href="namespaceos_1_1libraries_1_1Library.html#a0be33f2af5cb384f4d110fb8b6f09a30">Library::ldPathEnvironmentVariable</a>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> path.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() ? path.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() : std::string();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="
l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// Updates the value of LD_LIBRARY_PATH environment variable.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment">// Note that setPaths has an effect only for child processes</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// launched after calling it.</span></div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="namespaceos_1_1libraries.html#afc02134d9f729bf36a26d01dd7e112db"> 146</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceos_1_1libraries.html#afc02134d9f729bf36a26d01dd7e112db">setPaths</a>(<span class="keyword">const</span> std::string& newPaths)</div><div class="line"><a name="l00147"></a><s
pan class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="namespaceos.html#ac0f608e2a32764327e38c53d0d51527d">os::setenv</a>(<a class="code" href="namespaceos_1_1libraries_1_1Library.html#a0be33f2af5cb384f4d110fb8b6f09a30">Library::ldPathEnvironmentVariable</a>, newPaths);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// Append newPath to the current value of LD_LIBRARY_PATH environment</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// variable.</span></div><div class="line"><a name="l00154"></a><span class="lineno"><a class="
line" href="namespaceos_1_1libraries.html#a980d85a5e6c3980841696f8774283b39"> 154</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceos_1_1libraries.html#a980d85a5e6c3980841696f8774283b39">appendPaths</a>(<span class="keyword">const</span> std::string& newPaths)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos_1_1libraries.html#a41b3cb8b32c32ab2abf7a7aa62de9f18">paths</a>().empty()) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="namespaceos_1_1libraries.html#afc02134d9f729bf36a26d01dd7e112db">setPaths</a>(newPaths);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">else</span> {</div><div class="
line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="namespaceos_1_1libraries.html#afc02134d9f729bf36a26d01dd7e112db">setPaths</a>(<a class="code" href="namespaceos_1_1libraries.html#a41b3cb8b32c32ab2abf7a7aa62de9f18">paths</a>() + <span class="stringliteral">":"</span> + newPaths);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> } <span class="comment">// namespace libraries {</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="prepr
ocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#a34ee365ac8fbca1d01253da3287cb912">sysname</a>() = <span class="keyword">delete</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment">// Return the operating system name (e.g. Linux).</span></div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="namespaceos.html#a34ee365ac8fbca1d01253da3287cb912"> 170</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#a34ee365ac8fbca1d01253da3287cb912">sysname</a>()</div><div class="l
ine"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="classTry.html">Try<UTSInfo></a> info = <a class="code" href="namespaceos.html#afc96a896b632cb0942b317a1f8543919">uname</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span> (info.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(info.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"
></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> info->sysname;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3"> 182</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>()</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span cl
ass="lineno"> 184</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a> = <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">os::pids</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span> (pids.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(pids.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a na
me="l00189"></a><span class="lineno"> 189</span>  std::list<Process> result;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, pids.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">const</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceprocess.html">process</a> = <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">os::process</a>(pid);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// Ignore any processes that dis
appear between enumeration and now.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (process.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  result.push_back(process.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>());</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span clas
s="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="namespaceos.html#acd11eaf54627e394ca79979ee884f6c4"> 202</a></span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">const</span> std::list<Process>& <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>
0; <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& <a class="code" href="namespaceprocess.html">process</a>, processes) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span> (process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a> == pid) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="structNon
e.html">None</a>();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6"> 215</a></span> <span class="keyword">inline</span> std::set<pid_t> <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">children</a>(</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">const</span> std::list<Process>& <a class="code" href="namespaceos.html#aa98ca8ac255e2b9
c689979a1b40084d3">processes</a>,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">bool</span> recursive = <span class="keyword">true</span>)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// Perform a breadth first search for descendants.</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  std::set<pid_t> descendants;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  std::queue<pid_t> parents;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  parents.push(pid);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">do</
span> {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> parent = parents.front();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  parents.pop();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// Search for children of parent.</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& <a class="code" href="namespaceprocess.html">process</a>, processes) {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</spa
n> (process.<a class="code" href="structos_1_1Process.html#a3865855abd794165fef4465bb3c7eb54">parent</a> == parent) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Have we seen this child yet?</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (descendants.insert(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>).second) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  parents.push(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>
0; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  } <span class="keywordflow">while</span> (recursive && !parents.empty());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</span> descendants;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="namespaceos.html#a9ec324f930625229e5163199da838258"> 244</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">ch
ildren</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, <span class="keywordtype">bool</span> recursive = <span class="keyword">true</span>)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a> = <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a>();</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><d
iv class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">children</a>(pid, processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), recursive);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</
span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="preprocessor">#endif // __STOUT_OS_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="namespaceos_html_a34ee365ac8fbca1d01253da3287cb912"><div class="ttname"><a href="namespaceos.html#a34ee365ac8fbca1d01253da3287cb912">os::sysname</a></div><div class="ttdeci">Try< std::string > sysname()</div><div class="ttdef"><b>Definition:</b> os.hpp:170</div></div>
<div class="ttc" id="rename_8hpp_html"><div class="ttname"><a href="rename_8hpp.html">rename.hpp</a></div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="getenv_8hpp_html"><div class="ttname"><a href="getenv_8hpp.html">getenv.hpp</a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
[17/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2common_2parse_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2common_2parse_8hpp_source.html b/content/api/latest/c++/src_2common_2parse_8hpp_source.html
index 403ad10..590f484 100644
--- a/content/api/latest/c++/src_2common_2parse_8hpp_source.html
+++ b/content/api/latest/c++/src_2common_2parse_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="src_2common_2parse_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="commen
t">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div
class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __COMMON_PARSE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __COMMON_PARSE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="acls_8hpp.html">mesos/authorizer/acls.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span c
lass="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2module_2module_8hpp.html">mesos/module/module.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2st
out_2include_2stout_2protobuf_8hpp.html">stout/protobuf.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">stout/flags/parse.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "
<a class="code" href="messages_8hpp.html">messages/messages.hpp</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespaceflags.html"> 33</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceflags.html">flags</a> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespaceperf.html#a5692707e1d769c80a4bf0777965c0c11"> 36</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::ACLs></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::stri
ng& value)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6
258ba7">error</a>());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::ACLs>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">template</span> <></div><div class="line"><a
name="l00050"></a><span class="lineno"><a class="line" href="namespaceflags.html#abe681b6fde88dfbc4e8bd0d4ff4b192f"> 50</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::RateLimits></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> 
<span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::RateLimits>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a
name="l00060"></a><span class="lineno"> 60</span> }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespaceflags.html#adf4ad154619cd90b5c5be76d10c2ba46"> 64</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::Modules></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Convert from string or file to J
SON.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span
class="lineno"> 72</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::Modules>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespaceflags.html#a3182a3ea0404ef97cf06a7098a89ffe2"> 78</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::ContainerInfo
></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyw
ordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::ContainerInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><
div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="namespaceflags.html#a56e229e9259389d27f427fb84f114e4f"> 92</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::DeviceWhitelist></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85e
f726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> p
rotobuf::parse<mesos::DeviceWhitelist>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// When the same variable is listed multiple times,</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// uses only the last value.</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceflags.html#ab48910d4d9eac60450118f5ac04b2cc1"> 108</a></span> <span class=
"keyword">inline</span> <a class="code" href="classTry.html">Try<hashmap<std::string, std::string></a>> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>())
{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// Convert from JSON to Hashmap.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classhashmap.html">hashmap<std::string, std::string></a> <a class="code" href="namespacelambda.html#a6030d65051d5968ada4d2e528b2fcd57">map</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="foreach_8hpp.html#a66900b166526abe66464d659753
6b111">foreachpair</a> (<span class="keyword">const</span> std::string& key,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">const</span> <a class="code" href="structJSON_1_1Value.html">JSON::Value</a>& value,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  json-><a class="code" href="structJSON_1_1Object.html#a41bbf967d564eb3f57c2bb5453a0e7af">values</a>) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span> (!value.<a class="code" href="structJSON_1_1Value.html#a9f420d588c86317e0cc816b7d3ece0f8">is</a><<a class="code" href="structJSON_1_1String.html">JSON::String</a>>()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a
name="l00123"></a><span class="lineno"> 123</span>  <span class="stringliteral">"The value of key '"</span> + key + <span class="stringliteral">"' in '"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) + <span class="stringliteral">"'"</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="stringliteral">" is not a string"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  map[key] = value.<a class="code" href="structJSON_1_1Value.html#a32ddf233c0ec159c4d72252529219cf6">as</a><<a class="code" href="structJS
ON_1_1String.html">JSON::String</a>>().value;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <a class="code" href="namespacelambda.html#a6030d65051d5968ada4d2e528b2fcd57">map</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="comment">// TODO(klueska): Generalize this parser to take any comma separated</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// list and convert it to its appropriate type (i.e., not just for</span></div><div class="line"><a name="l001
35"></a><span class="lineno"> 135</span> <span class="comment">// unsigned ints). Issues could arise when the generic type is a</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// string that contains commas though, so generalizing this is not as</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// straightforward as it looks at first glance.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="namespaceflags.html#a309ce09d3d62bea7d94580a72eaf856e"> 139</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::vector<unsigned int></a>> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="
keyword">const</span> std::string& value)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  std::vector<unsigned int> result;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& token, <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(value, <span class="stringliteral">","</span>)) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="classTry.html">Try<unsigned int></a> number = numify<unsigned int>(token);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name
="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (number.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to numify '"</span> + token + <span class="stringliteral">"': "</span> + number.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  result.push_back(number.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l0
0151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// NOTE: Strings in the set cannot contain commas, since that</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// is the delimiter and we provide no way to escape it.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">//</span></div><div class="
line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// TODO(klueska): Generalize this parser to take any comma separated</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// list and convert it to its appropriate type (i.e., not just for</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// unsigned ints).</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespaceflags.html#a6ca914ce2cd6c21e317d4318b87054d3"> 164</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<std::string></a>> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">cons
t</span> std::string& value)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::set<std::string> result;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& token, <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(value, <span class="stringliteral">","</span>)) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (result.count(token) > 0) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error
</a>(<span class="stringliteral">"Duplicate token '"</span> + token + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  result.insert(token);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="li
ne"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespaceflags.html#a286a74f154d7c08adb062bb29a953b37"> 181</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::CapabilityInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class=
"keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::CapabilityInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class
="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="namespaceflags.html#a2c8bebc75a74ef7a7dd9bab17d7911da"> 193</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::Environment></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div cl
ass="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::Environment>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="
line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="namespaceflags.html#adb42f28d5f66f0f39302dbe3bbdd44ba"> 205</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::RLimitInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef7
26065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::RLimitInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"
><a name="l00213"></a><span class="lineno"> 213</span> }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespaceflags.html#a0e145190939182a41a4dd69891e2b35e"> 217</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::DomainInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="classTry.html">Try<JSON::
Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::DomainInfo>(json.<a class="code" href="cla
ssTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="namespaceflags.html#a92cf25b5edec6585475a27d0553c5f7b"> 229</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::FrameworkID></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> {</div><div class="line"><a name="l00231"></a><span clas
s="lineno"> 231</span>  mesos::FrameworkID frameworkId;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  frameworkId.set_value(value);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> frameworkId;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="namespaceflags.html#a1a49c5b64eb01185399d54bd02808c35"> 239</a></span> <span class="keyword">inline</span> <a class="code
" href="classTry.html">Try<mesos::ExecutorID></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  mesos::ExecutorID executorId;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  executorId.set_value(value);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> executorId;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><d
iv class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="namespaceflags.html#a0318440c1e1f457d8e8337ba13c14c5c"> 249</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::SlaveID></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  mesos::SlaveID slaveId;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  slaveId.set_value(value);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</
span>  <span class="keywordflow">return</span> slaveId;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> } <span class="comment">// namespace flags {</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor">#endif // __COMMON_PARSE_HPP__</span></div><div class="ttc" id="structJSON_1_1Value_html_a32ddf233c0ec159c4d72252529219cf6"><div class="ttname"><a href="structJSON_1_1Value.html#a32ddf233c0ec159c4d72252529219cf6">JSON::Value::as</a></div><div class="ttdeci">const T & as() const </div><div class="ttdef"><b>Definition:</b> json.hpp:340</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">parse.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2common_2recordio_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2common_2recordio_8hpp_source.html b/content/api/latest/c++/src_2common_2recordio_8hpp_source.html
index 0760cb8..3856c10 100644
--- a/content/api/latest/c++/src_2common_2recordio_8hpp_source.html
+++ b/content/api/latest/c++/src_2common_2recordio_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="src_2common_2recordio_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"
></a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment
">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __COMMON_RECORDIO_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __COMMON_RECORDIO_HPP__</span></div><div
class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <queue></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <utility></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2mesos_8hpp.html">mesos/mesos.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <
<a class="code" href="defer_8hpp.html">process/defer.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="dispatch_8hpp.html">process/dispatch.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="loop_8hpp.html">process/loop.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="owned_8hpp.html">process/owned.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preproc
essor">#include <<a class="code" href="3rdparty_2libprocess_2include_2process_2pid_8hpp.html">process/pid.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="lambda_8hpp.html">stout/lambda.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2in
clude_2stout_2recordio_8hpp.html">stout/recordio.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1recordio.html"> 41</a></span> <span class="keyword">namespace </span><a class="code" href="namespacerecordio.html">recordio</a> {</div><div class="line"><a name="l000
42"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1recordio_1_1internal.html"> 43</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html">ReaderProcess</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00047"></a><span c
lass="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1Reader.html"> 62</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1recordio_1_1Reader.html">Reader</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// We spawn `ReaderProcess` as a managed process to guarantee</span></div><div class="line"><a name="l00066"></a><span c
lass="lineno"> 66</span>  <span class="comment">// that it does not wait on itself (this would cause a deadlock!).</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// See comments in `Connection::Data` for further details.</span></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1Reader.html#ab91aee86565a6eafe13601fbeea41c66"> 68</a></span>  <a class="code" href="classmesos_1_1internal_1_1recordio_1_1Reader.html#ab91aee86565a6eafe13601fbeea41c66">Reader</a>(::<a class="code" href="classrecordio_1_1Decoder.html">recordio::Decoder<T></a>&& decoder,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">process::http::Pipe::Reader</a> reader)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span
>  : <a class="code" href="namespaceprocess.html">process</a>(<a class="code" href="namespaceprocess.html">process</a>::<a class="code" href="namespaceprocess.html#aff22904a83567125d3b4d0d88e5a2270">spawn</a>(</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  new <a class="code" href="namespaceinternal.html">internal</a>::ReaderProcess<T>(<a class="code" href="namespacestd.html">std</a>::move(decoder), reader),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  true)) {}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1Reader.html#ad1adb5f2ced8d8fc56b26e787fecd0a3"> 74</a></span>  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1recordio_1_1Reader.html#ad1adb5f2ced8d8fc56b26e787fecd0a3">~R
eader</a>()</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// Note that we pass 'false' here to avoid injecting the</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// termination event at the front of the queue. This is</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// to ensure we don't drop any queued request dispatches</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// which would leave the caller with a future stuck in</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// a pending state.</span></div><div class="line"><a name="l00081"></a><span class="line
no"> 81</span>  <a class="code" href="namespaceprocess.html#a20443908afa3212215166e26065349e5">process::terminate</a>(<a class="code" href="namespaceprocess.html">process</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1Reader.html#a089c0b92ecaffcb3a472103c233e4cf9"> 90</a></span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Result<T></a>> <a class="code" href="classmesos_1_1internal_1_1recordio_1_1Reader.html#a089c0b92ecaffcb3a472103c233e4cf9">read</a>()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordf
low">return</span> <a class="code" href="namespaceprocess.html#acfbc29404bc653268289691b0dd59e22">process::dispatch</a>(<a class="code" href="namespaceprocess.html">process</a>, &<a class="code" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html">internal::ReaderProcess<T>::read</a>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="structprocess_1_1PID.html">process::PID<internal::ReaderProcess<T></a>> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> };</div><div class="line
"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1recordio.html#a5fcab68176c462aaeed909f304c91bdf"> 112</a></span> <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1recordio.html#a5fcab68176c462aaeed909f304c91bdf">transform</a>(</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned</a><<a class="code" href="classmesos_1_1internal_1_1recordio_1_1Reader.html">Reader<T></a>>&& reader,</div><div class="
line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">const</span> std::function<std::string(<span class="keyword">const</span> T&)>& func,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">process::http::Pipe::Writer</a> writer)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#a59c192ee8ea5abbbee1642957f47c92a">process::loop</a>(</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  [=]() {</div><div class="line"><a name="l00120"></a><span class="lineno">
120</span>  <span class="keywordflow">return</span> reader->read();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  },</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  [=](<span class="keyword">const</span> <a class="code" href="classResult.html">Result<T></a>& record) <span class="keyword">mutable</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  -> <a class="code" href="classprocess_1_1Future.html">process::Future</a><<a class="code" href="classprocess_1_1ControlFlow.html">process::ControlFlow<Nothing></a>> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// This could happen if EOF is sent by the writer.</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span> (record.isNo
ne()) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#a4beae62da50c26c6cb8afd14e385d0c8">process::Break</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// This could happen if there is a de-serialization error.</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span> (record.isError()) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(record.error());</div><div class="line"><a n
ame="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// TODO(vinod): Instead of detecting that the reader went away only</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// after attempting a write, leverage `writer.readerClosed` future.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (!writer.<a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html#ad945bef2134c872f8ea43dea6db84c66">write</a>(func(record.get()))) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failur
e</a>(<span class="stringliteral">"Write failed to the pipe"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Continue.html">process::Continue</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  });</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</
div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keyword">class </span>ReaderProcess : <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">process::Process</a><ReaderProcess<T>></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#a11e21afb1b5e47b24074c9c8d7775e1e"> 151</a></span>  <a class="code" href="classmesos_1_1internal_1_1reco
rdio_1_1internal_1_1ReaderProcess.html#a11e21afb1b5e47b24074c9c8d7775e1e">ReaderProcess</a>(</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  ::<a class="code" href="classrecordio_1_1Decoder.html">recordio::Decoder<T></a>&& _decoder,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">process::http::Pipe::Reader</a> _reader)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  : <a class="code" href="namespaceprocess.html">process</a>::ProcessBase(<a class="code" href="namespaceprocess.html">process</a>::ID::<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">generate</a>(<span class="stringliteral">"__reader__"</span>)),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  decoder(_decoder),</div><div class="line"><
a name="l00156"></a><span class="lineno"> 156</span>  reader(_reader),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  done(false) {}</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#a41f806fdc5a1ee5e8ba3e5ceee729fef"> 159</a></span>  <span class="keyword">virtual</span> <a class="code" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#a41f806fdc5a1ee5e8ba3e5ceee729fef">~ReaderProcess</a>() {}</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#ad17237b8d9089c4112dc03268ed1c5e0"> 161</a></span>  <a class="code" href="clas
sprocess_1_1Future.html">process::Future<Result<T></a>> <a class="code" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#ad17237b8d9089c4112dc03268ed1c5e0">read</a>()</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (!records.empty()) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classResult.html">Result<T></a> record = std::move(records.front());</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  records.pop();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">return</span> record;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><
span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>.isSome()) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(<a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>->message);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span> (done) {</div><div class="line"><a name="l00174"></a><span clas
s="lineno"> 174</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">auto</span> waiter = <a class="code" href="classprocess_1_1Owned.html">process::Owned<process::Promise<Result<T></a>>>(</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">new</span> <a class="code" href="classprocess_1_1Promise.html">process::Promise<Result<T></a>>());</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  waiters.push(std::move(waiter));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword
flow">return</span> waiters.back()->future();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#af123bea3321a9d99d1fecaf33cd5179b"> 184</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#af123bea3321a9d99d1fecaf33cd5179b">initialize</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00186"></a><span class="lineno">
186</span>  consume();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#a591bf74929a5fc7db08c73c1761e7a50"> 189</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1recordio_1_1internal_1_1ReaderProcess.html#a591bf74929a5fc7db08c73c1761e7a50">finalize</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// Fail any remaining waiters.</span></div><div class="line"><a name="l00192"></a><span class="lineno
"> 192</span>  fail(<span class="stringliteral">"Reader is terminating"</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">void</span> fail(<span class="keyword">const</span> std::string& message)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classError.html">Error</a>(message);</div><div class="line"><a name="l00199"></a><span class="l
ineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">while</span> (!waiters.empty()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  waiters.front()->fail(message);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  waiters.pop();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">void</span> complete()</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  done = <span class="keyword"
>true</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">while</span> (!waiters.empty()) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  waiters.front()->set(<a class="code" href="classResult.html">Result<T>::none</a>());</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  waiters.pop();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">using</span> <a class="code" href="classprocess_1_1Process.html">process::Process<ReaderProcess
<T></a>>::consume;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordtype">void</span> consume()</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  reader.read()</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  .onAny(<a class="code" href="namespaceprocess.html#a8b27a2ef76eb133bf0ce7a5eea4fb77c">process::defer</a>(<span class="keyword">this</span>, &ReaderProcess::_consume, lambda::_1));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">void</spa
n> _consume(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<std::string></a>& <a class="code" href="namespacemesos_1_1internal_1_1credentials.html#a137c93d60149616181a10e9f39986f7f">read</a>)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (!read.<a class="code" href="classprocess_1_1Future.html#a68f241961e700d0cecf982d9cc0043d7">isReady</a>()) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  fail(<span class="stringliteral">"Pipe::Reader failure: "</span> +</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  (read.<a class="code" href="classprocess_1_1Future.html#a493227e57f8848e37777b89c0f81e2ec">isFailed</a>() ? read.<a class="code" href="classprocess_1_1Future.html
#ae649c56b07f44c05e4b7aa3620133ff9">failure</a>() : <span class="stringliteral">"discarded"</span>));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Have we reached EOF?</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (read->empty()) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  complete();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00236"></a><span class="lineno">
236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="classTry.html">Try<std::deque<Try<T></a>>> <a class="code" href="namespacerouting_1_1filter_1_1internal.html#a584df149d400373b0ed7c48c1b07cecd">decode</a> = decoder.decode(read.<a class="code" href="classprocess_1_1Future.html#aa78977d3b585a5f5ccd682c1e9e2ddc4">get</a>());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span> (decode.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  fail(<span class="stringliteral">"Decoder failure: "</span> + decode.<a class="code" hre
f="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classTry.html">Try<T></a>& record, decode.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span> (!waiters.empty()) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  waiters.front()->set(<a class="code" href="classResult.html">Resul
t<T></a>(std::move(record)));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  waiters.pop();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  records.push(std::move(record));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  consume();</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno">
257</span>  <a class="code" href="classrecordio_1_1Decoder.html">::recordio::Decoder<T></a> decoder;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Reader.html">process::http::Pipe::Reader</a> reader;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  std::queue<process::Owned<process::Promise<Result<T>>>> waiters;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  std::queue<Result<T>> records;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordtype">bool</span> done;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class
="code" href="classOption.html">Option<Error></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> };</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> } <span class="comment">// namespace recordio {</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div clas
s="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="preprocessor">#endif // __COMMON_RECORDIO_HPP__</span></div><div class="ttc" id="classprocess_1_1Future_html_a68f241961e700d0cecf982d9cc0043d7"><div class="ttname"><a href="classprocess_1_1Future.html#a68f241961e700d0cecf982d9cc0043d7">process::Future::isReady</a></div><div class="ttdeci">bool isReady() const </div><div class="ttdef"><b>Definition:</b> future.hpp:1220</div></div>
<div class="ttc" id="namespaceprocess_1_1ID_html_aeb11a48c9def1da169d8455a30d0ee39"><div class="ttname"><a href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">process::ID::generate</a></div><div class="ttdeci">std::string generate(const std::string &prefix="")</div><div class="ttdoc">Returns &#39;prefix(N)&#39; where N represents the number of instances where the same prefix (wrt...</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="namespacerecordio_html"><div class="ttname"><a href="namespacerecordio.html">recordio</a></div><div class="ttdoc">Provides facilities for "Record-IO" encoding of data. </div><div class="ttdef"><b>Definition:</b> recordio.hpp:50</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
[27/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2bootid_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2bootid_8hpp_source.html b/content/api/latest/c++/posix_2bootid_8hpp_source.html
index cbc166d..12bedf5 100644
--- a/content/api/latest/c++/posix_2bootid_8hpp_source.html
+++ b/content/api/latest/c++/posix_2bootid_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="posix_2bootid_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//
</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div clas
s="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_BOOTID_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_BOOTID_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <sys/time.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">s
tout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">stout/os/read.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno">
26</span> <span class="preprocessor">#if defined(__APPLE__) || defined(__FreeBSD__)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="sysctl_8hpp.html">stout/os/sysctl.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#endif // __APPLE__ || __FreeBSD__</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespaceos.html#ab4d56d19b1f9ff0d24d9
36327ae77b22"> 33</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#ab4d56d19b1f9ff0d24d936327ae77b22">bootId</a>()</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a> = <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(<span class="stringliteral">"/proc/sys/kernel/random/boot_id"</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span> (read.<a class="code" href="clas
sTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">read</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <a class="code" href="namespacestrings.html#a91df967b38a9c92553f009d681688734">strings::trim</a>(read.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#elif defined(__APPLE__) || defined(__FreeBSD__)</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// For OS X, we use the boot time in seconds as a uniq
ue boot id.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Although imperfect, this works quite well in practice. NOTE: we can't use</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// milliseconds here instead of seconds because the relatively high</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// imprecision of millisecond resolution would cause `bootId` to return a</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// different number nearly every time it was called.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classTry.html">Try<timeval></a> boot_time = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_BOOTTIME).<a
class="code" href="structos_1_1sysctl.html#aa0170ffd9e615f415e5cef7126831728">time</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (boot_time.isError()) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(boot_time.error());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(boot_time->tv_sec);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</
span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not implemented"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_BOOTID_HPP__</span></div><div class="ttc" id="namespaceos_html_ab4d56d19b1f9ff0d24d936327ae77b22"><div class="ttname"><a href="namespaceos.html#ab4d56d19b1f9ff0d24d936327ae77b22">os::bootId</a></div><div class="ttdeci">Try< std:
:string > bootId()</div><div class="ttdef"><b>Definition:</b> bootid.hpp:33</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2os_2read_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">read.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2chdir_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2chdir_8hpp_source.html b/content/api/latest/c++/posix_2chdir_8hpp_source.html
index f323260..edfa616 100644
--- a/content/api/latest/c++/posix_2chdir_8hpp_source.html
+++ b/content/api/latest/c++/posix_2chdir_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2chdir_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_CHDIR_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_CHDIR_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5"> 25</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5">chdir</a>(<span class="keyword">const</span> std::string&am
p; directory)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a11febfefa1908b3cb87b77da5c8482c5">chdir</a>(directory.c_str()) < 0) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> }</div><div class="line"><a name="l0
0033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_CHDIR_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2chroot_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2chroot_8hpp_source.html b/content/api/latest/c++/posix_2chroot_8hpp_source.html
index 046dc44..560e606 100644
--- a/content/api/latest/c++/posix_2chroot_8hpp_source.html
+++ b/content/api/latest/c++/posix_2chroot_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2chroot_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><sp
an class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// dis
tributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_CHROOT_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_OS_POSIX_CHROOT_HPP__</span></div><
div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name=
"l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespaceos.html#a555a98268adfef95f69ee212b318bbc0"> 28</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a555a98268adfef95f69ee212b318bbc0">chroot</a>(<span class="keyword">const</span> std::string& directory)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a555a98268adfef95f69ee212b318bbc0">chroot</a>(directory.c_str()) < 0) {</div><div class="line"><a name="l00031"></a><
span class="lineno"> 31</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#endi
f // __STOUT_OS_POSIX_CHROOT_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="namespaceos_html_a555a98268adfef95f69ee212b318bbc0"><div class="ttname"><a href="namespaceos.html#a555a98268adfef95f69ee212b318bbc0">os::chroot</a></div><div class="ttdeci">Try< Nothing > chroot(const std::string &directory)</div><div class="ttdef"><b>Definition:</b> chroot.hpp:28</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2close_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2close_8hpp_source.html b/content/api/latest/c++/posix_2close_8hpp_source.html
index 8638242..71e9ebd 100644
--- a/content/api/latest/c++/posix_2close_8hpp_source.html
+++ b/content/api/latest/c++/posix_2close_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2close_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_CLOSE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_CLOSE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></di
v><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc"> 24</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">close</a>(<span class="keywordtype">int</span> fd)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">close</a>(fd) != 0) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33<
/span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_CLOSE_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="namespaceos_html_a8df77ec6d6b8d32d9b287a41bc74cfdc"><div class="ttname"><a href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a></div><div class="ttdeci">Try< Nothing > close(int fd)</div><div class="ttdef"><b>Definition:</b> close.hpp:24</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2copyfile_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2copyfile_8hpp_source.html b/content/api/latest/c++/posix_2copyfile_8hpp_source.html
index 0ee3525..235a0a3 100644
--- a/content/api/latest/c++/posix_2copyfile_8hpp_source.html
+++ b/content/api/latest/c++/posix_2copyfile_8hpp_source.html
@@ -53,12 +53,12 @@
</div><!--header-->
<div class="contents">
<a href="posix_2copyfile_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">
//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cl
ass="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_COPYFILE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_COPYFILE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></sp
an></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="
code" href="stat_8hpp.html">stout/os/stat.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// This implementation works by running the `cp` command with some</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// additional conditions to ensure we copy a single file only,</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// from an absolute file path to another absolute file path.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32
</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Directories are not supported as a destination path for two reasons:</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// 1. No callers depended on that behavior,</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// 2. Consistency with Windows implementation.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Relative paths are not allowed, as these are resolved based on</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// the current working directory and may be inconsisten
t.</span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespaceos.html#a707a0147851cfc89e4421a07dd5f17a3"> 39</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a707a0147851cfc89e4421a07dd5f17a3">copyfile</a>(</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">const</span> std::string& source, <span class="keyword">const</span> std::string& destination)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// NOTE: We check the form of the path too in case it does not exist, and to</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// prevent user error.</span></div><div class="
line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">stat::isdir</a>(source) || source.back() == <span class="charliteral">'/'</span>) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`source` was a directory"</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">stat::isdir</a>(destination) || destination.back() == <span class="charliteral">'/'</
span>) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`destination` was a directory"</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacepath.html#a09c4941618b3a4ea2dbfccf5fe9d3687">path::absolute</a>(source)) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`source` was a relative path"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#
160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacepath.html#a09c4941618b3a4ea2dbfccf5fe9d3687">path::absolute</a>(destination)) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"`destination` was a relative path"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<int></a> <a class="code" href="namespaceproc.html#a34396c6140a28f583
dc13fee3c3c35d4">status</a> = <a class="code" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os::spawn</a>(<span class="stringliteral">"cp"</span>, {<span class="stringliteral">"cp"</span>, source, destination});</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> (status.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"os::spawn failed"</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a n
ame="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (!(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#af9a4ddf9eee6c4a3bc9be070d59b7ccf">WIFEXITED</a>(status.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()) && <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(status.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()) == 0)) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"cp failed with status: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(status.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>()));</div><div class="li
ne"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_COPYFILE_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div cl
ass="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< int ></a></div></div>
<div class="ttc" id="namespaceos_html_a707a0147851cfc89e4421a07dd5f17a3"><div class="ttname"><a href="namespaceos.html#a707a0147851cfc89e4421a07dd5f17a3">os::copyfile</a></div><div class="ttdeci">Try< Nothing > copyfile(const std::string &source, const std::string &destination)</div><div class="ttdef"><b>Definition:</b> copyfile.hpp:39</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceproc_html_a34396c6140a28f583dc13fee3c3c35d4"><div class="ttname"><a href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a></div><div class="ttdeci">Result< ProcessStatus > status(pid_t pid)</div><div class="ttdef"><b>Definition:</b> proc.hpp:166</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html_a18f614e5bdf40984c33888a5fa9599ca"><div class="ttname"><a href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">os::spawn</a></div><div class="ttdeci">Option< int > spawn(const std::string &command, const std::vector< std::string > &arguments)</div><div class="ttdef"><b>Definition:</b> shell.hpp:162</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespacepath_html_a09c4941618b3a4ea2dbfccf5fe9d3687"><div class="ttname"><a href="namespacepath.html#a09c4941618b3a4ea2dbfccf5fe9d3687">path::absolute</a></div><div class="ttdeci">bool absolute(const std::string &path)</div><div class="ttdoc">Returns whether the given path is an absolute path. </div><div class="ttdef"><b>Definition:</b> path.hpp:96</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2dup_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2dup_8hpp_source.html b/content/api/latest/c++/posix_2dup_8hpp_source.html
index c0ee849..2539ad1 100644
--- a/content/api/latest/c++/posix_2dup_8hpp_source.html
+++ b/content/api/latest/c++/posix_2dup_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="posix_2dup_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</s
pan></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="
line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_DUP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_DUP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div cla
ss="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="namespaceos.html#a622be738276833e635a7db06cff31a35"> 23</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<int></a> <a class="code" href="namespaceos.html#a622be738276833e635a7db06cff31a35">dup</a>(<span class="keywordtype">int</span> fd)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">int</span> result = <a class="code" href="namespaceos.html#a622be738276833e635a7db06cff31a35">::dup
</a>(fd);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if</span> (result < 0) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span clas
s="lineno"> 34</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_DUP_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2dynamiclibrary_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2dynamiclibrary_8hpp_source.html b/content/api/latest/c++/posix_2dynamiclibrary_8hpp_source.html
index 8d92782..07d3f6c 100644
--- a/content/api/latest/c++/posix_2dynamiclibrary_8hpp_source.html
+++ b/content/api/latest/c++/posix_2dynamiclibrary_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="posix_2dynamiclibrary_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="com
ment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><
div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_POSIX_DYNAMICLIBRARY_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_POSIX_DYNAMICLIBRARY_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <dlfcn.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="not
hing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html"> 28</a></span> <span class="keyword">class </span><a class="code" href="classDynamicLibrary.html">DynamicLibrary</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00031
"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494"> 31</a></span>  <a class="code" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494">DynamicLibrary</a>() : handle_(nullptr) { }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// Since this class manages a naked handle it cannot be copy- or</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// move-constructed.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// TODO(bbannier): Allow for move-construction.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494">DynamicLibr
ary</a>(<span class="keyword">const</span> <a class="code" href="classDynamicLibrary.html">DynamicLibrary</a>&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="classDynamicLibrary.html#a5068283b12c51f6f3589f18ba7075494">DynamicLibrary</a>(<a class="code" href="classDynamicLibrary.html">DynamicLibrary</a>&&) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a42c1fe0f7a71004c823df00a9526c616"> 39</a></span>  <span class="keyword">virtual</span> <a class="code" href="classDynamicLibrary.html#a42c1fe0f7a71004c823df00a9526c616">~DynamicLibrary</a>()</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class=
"lineno"> 41</span>  <span class="keywordflow">if</span> (handle_ != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="classDynamicLibrary.html#a4c65d79591c7fb3173916dec0a1ddd8e">close</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a8c86c304bbcce3680ecea2b4115fb09a"> 46</a></span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classDynamicLibrary.html#a8c86c304bbcce3680ecea2b4115fb09a">open</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><di
v class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// Check if we've already opened a library.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span> (handle_ != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Library already opened"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  handle_ = dlopen(path.c_str(), RTLD_NOW);</div><div class="line"><a n
ame="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span> (handle_ == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Could not load library '"</span> + path + <span class="stringliteral">"': "</span> + dlerror());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  path_ = path;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</spa
n>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a4c65d79591c7fb3173916dec0a1ddd8e"> 64</a></span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="classDynamicLibrary.html#a4c65d79591c7fb3173916dec0a1ddd8e">close</a>()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (handle_ == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> <
a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Could not close library; handle was already `nullptr`"</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (dlclose(handle_) != 0) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="stringliteral">"Could not close library '"</span> +</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  (path_.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323"
>isSome</a>() ? path_.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() : <span class="stringliteral">""</span>) + <span class="stringliteral">"': "</span> + dlerror());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  handle_ = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  path_ = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00080"></a><sp
an class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classDynamicLibrary.html#a0ab4cac9af777fb64c70863534f1c64a"> 82</a></span>  <a class="code" href="classTry.html">Try<void*></a> <a class="code" href="classDynamicLibrary.html#a0ab4cac9af777fb64c70863534f1c64a">loadSymbol</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (handle_ == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="c
ode" href="classError.html">Error</a>(</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="stringliteral">"Could not get symbol '"</span> + name + <span class="stringliteral">"'; library handle was `nullptr`"</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">void</span>* symbol = dlsym(handle_, name.c_str());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (symbol == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class=
"keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="stringliteral">"Error looking up symbol '"</span> + name + <span class="stringliteral">"' in '"</span> +</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  (path_.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() ? path_.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>() : <span class="stringliteral">""</span>) + <span class="stringliteral">"' : "</span> + dlerror());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="k
eywordflow">return</span> symbol;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span>* handle_;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classOption.html">Option<std::string></a> path_;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#endif // __STOUT_POSIX_DYNAMICLIBRARY_HPP__</span></div><div class="ttc" id="namespacepath_html
"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="classDynamicLibrary_html_a8c86c304bbcce3680ecea2b4115fb09a"><div class="ttname"><a href="classDynamicLibrary.html#a8c86c304bbcce3680ecea2b4115fb09a">DynamicLibrary::open</a></div><div class="ttdeci">Try< Nothing > open(const std::string &path)</div><div class="ttdef"><b>Definition:</b> dynamiclibrary.hpp:46</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classDynamicLibrary_html_a0ab4cac9af777fb64c70863534f1c64a"><div class="ttname"><a href="classDynamicLibrary.html#a0ab4cac9af777fb64c70863534f1c64a">DynamicLibrary::loadSymbol</a></div><div class="ttdeci">Try< void * > loadSymbol(const std::string &name)</div><div class="ttdef"><b>Definition:</b> dynamiclibrary.hpp:82</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2fcntl_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2fcntl_8hpp_source.html b/content/api/latest/c++/posix_2fcntl_8hpp_source.html
index 9bd4372..a0789e6 100644
--- a/content/api/latest/c++/posix_2fcntl_8hpp_source.html
+++ b/content/api/latest/c++/posix_2fcntl_8hpp_source.html
@@ -57,7 +57,7 @@
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_a238d27a90a749967761c1019d27b7e83"><div class="ttname"><a href="namespaceos.html#a238d27a90a749967761c1019d27b7e83">os::isNonblock</a></div><div class="ttdeci">Try< bool > isNonblock(int fd)</div><div class="ttdef"><b>Definition:</b> fcntl.hpp:87</div></div>
<div class="ttc" id="namespaceos_html_a32281111157c19876d8dd6dac7cdbc13"><div class="ttname"><a href="namespaceos.html#a32281111157c19876d8dd6dac7cdbc13">os::isCloexec</a></div><div class="ttdeci">Try< bool > isCloexec(int fd)</div><div class="ttdef"><b>Definition:</b> fcntl.hpp:59</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespaceos_html_adcd5b59146bb45a7ba431120a0d3b464"><div class="ttname"><a href="namespaceos.html#adcd5b59146bb45a7ba431120a0d3b464">os::nonblock</a></div><div class="ttdeci">Try< Nothing > nonblock(int fd)</div><div class="ttdef"><b>Definition:</b> fcntl.hpp:71</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2fork_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2fork_8hpp_source.html b/content/api/latest/c++/posix_2fork_8hpp_source.html
index 4095ff5..6b952e7 100644
--- a/content/api/latest/c++/posix_2fork_8hpp_source.html
+++ b/content/api/latest/c++/posix_2fork_8hpp_source.html
@@ -56,7 +56,7 @@
<div class="ttc" id="structos_1_1Fork_html_a17a7ab7e0d5ac27ec1356841c485cf24"><div class="ttname"><a href="structos_1_1Fork.html#a17a7ab7e0d5ac27ec1356841c485cf24">os::Fork::Fork</a></div><div class="ttdeci">Fork(const Option< void(*)()> &_function, const Fork &fork1, const Fork &fork2)</div><div class="ttdef"><b>Definition:</b> fork.hpp:154</div></div>
<div class="ttc" id="namespaceos_html_aa9ac22b4028f187826a9861373006abf"><div class="ttname"><a href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">os::strerror</a></div><div class="ttdeci">std::string strerror(int errno_)</div><div class="ttdoc">A thread-safe version of strerror. </div><div class="ttdef"><b>Definition:</b> strerror.hpp:30</div></div>
<div class="ttc" id="structos_1_1Fork_html"><div class="ttname"><a href="structos_1_1Fork.html">os::Fork</a></div><div class="ttdef"><b>Definition:</b> fork.hpp:113</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="structos_1_1Fork_html_aa9ba5406fbb3a143b0f44ae58d4e04c6"><div class="ttname"><a href="structos_1_1Fork.html#aa9ba5406fbb3a143b0f44ae58d4e04c6">os::Fork::Fork</a></div><div class="ttdeci">Fork(const Option< void(*)()> &_function, const Fork &fork1, const Fork &fork2, const Exec &_exec)</div><div class="ttdef"><b>Definition:</b> fork.hpp:163</div></div>
@@ -66,7 +66,7 @@
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_aead39710af2622ee9b0d412f62e90aa5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a></div><div class="ttdeci">const mode_t S_IWUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:306</div></div>
<div class="ttc" id="structos_1_1Fork_1_1Tree_1_1Memory_html_a748a18ef5738f73f5fe91c235d30fa27"><div class="ttname"><a href="structos_1_1Fork_1_1Tree_1_1Memory.html#a748a18ef5738f73f5fe91c235d30fa27">os::Fork::Tree::Memory::session</a></div><div class="ttdeci">pid_t session</div><div class="ttdef"><b>Definition:</b> fork.hpp:239</div></div>
<div class="ttc" id="exit_8hpp_html_a536432347f1ad965e8116c2940fbf110"><div class="ttname"><a href="exit_8hpp.html#a536432347f1ad965e8116c2940fbf110">EXIT</a></div><div class="ttdeci">#define EXIT(status)</div><div class="ttdef"><b>Definition:</b> exit.hpp:31</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a66cff14a0638cde9f422c7a4b0938e61"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a></div><div class="ttdeci">const mode_t S_IRUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:305</div></div>
<div class="ttc" id="structos_1_1Fork_1_1Tree_1_1Memory_html"><div class="ttname"><a href="structos_1_1Fork_1_1Tree_1_1Memory.html">os::Fork::Tree::Memory</a></div><div class="ttdef"><b>Definition:</b> fork.hpp:235</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2fsync_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2fsync_8hpp_source.html b/content/api/latest/c++/posix_2fsync_8hpp_source.html
index faf3013..56792d7 100644
--- a/content/api/latest/c++/posix_2fsync_8hpp_source.html
+++ b/content/api/latest/c++/posix_2fsync_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2fsync_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_FSYNC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_FSYNC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><d
iv class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespaceos.html#ad0ab4160dd8a8240d76eddca85f687a2"> 24</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#ad0ab4160dd8a8240d76eddca85f687a2">fsync</a>(<span class="keywordtype">int</span> fd)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if<
/span> (::<a class="code" href="namespaceos.html#ad0ab4160dd8a8240d76eddca85f687a2">fsync</a>(fd) == -1) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00034"></a><sp
an class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_FSYNC_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="namespaceos_html_ad0ab4160dd8a8240d76eddca85f687a2"><div class="ttname"><a href="namespaceos.html#ad0ab4160dd8a8240d76eddca85f687a2">os::fsync</a></div><div class="ttdeci">Try< Nothing > fsync(int fd)</div><div class="ttdef"><b>Definition:</b> fsync.hpp:24</div></div>
[24/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2mktemp_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2mktemp_8hpp_source.html b/content/api/latest/c++/posix_2mktemp_8hpp_source.html
index 8eedf74..92ad49a 100644
--- a/content/api/latest/c++/posix_2mktemp_8hpp_source.html
+++ b/content/api/latest/c++/posix_2mktemp_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="posix_2mktemp_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//
</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div clas
s="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_MKTEMP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_MKTEMP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"
><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">st
out/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="temp_8hpp.html">stout/os/temp.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Creates a temporary file using the specified path template. The</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// template may be any path with _6_ `Xs' appended to it, f
or example</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// /tmp/temp.XXXXXX. The trailing `Xs' are replaced with a unique</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// alphanumeric combination.</span></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespaceos.html#a913abd73990a86de728ab7141b714b85"> 36</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#a913abd73990a86de728ab7141b714b85">mktemp</a>(</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a> = <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="name
spaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">os::temp</a>(), <span class="stringliteral">"XXXXXX"</span>))</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">char</span>* <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a> = <span class="keyword">new</span> <span class="keywordtype">char</span>[<a class="code" href="namespacepath.html">path</a>.size() + 1];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ::memcpy(temp, <a class="code" href="namespacepath.html">path</a>.c_str(), <a class="code" href="namespacepath.html">path</a>.size() + 1);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="int__fd_8hpp.html#aea4dbda01c9045
5f158ffa9b924c2f07">int_fd</a> fd = ::mkstemp(temp);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (fd < 0) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">delete</span>[] <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// We ignore the return value of close(). This is because users</span></div><div class="line"><a name="l00049"></a><span class="linen
o"> 49</span>  <span class="comment">// calling this function are interested in the return value of</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// mkstemp(). Also an unsuccessful close() doesn't affect the file.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::string result(temp);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">delete</span>[] <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">retur
n</span> result;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_MKTEMP_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_a913abd73990a86de728ab7141b714b85"><div class="ttname"><a href="namespaceos.html#a913abd73990a86de728ab7141b714b85">os::mktemp</a></div><div class="ttdeci">Try< std::string > mktemp(const std::string &path=path::join(os::temp(),"XXXXXX"))</div><div class="ttdef"><b>Definition:</b> mktemp.hpp:36</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespacepath_html_aa86b16a2171cec90bb3337930513ef0f"><div class="ttname"><a href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a></div><div class="ttdeci">std::string join(const std::string &path1, const std::string &path2, const char _separator=os::PATH_SEPARATOR)</div><div class="ttdef"><b>Definition:</b> path.hpp:56</div></div>
<div class="ttc" id="close_8hpp_html"><div class="ttname"><a href="close_8hpp.html">close.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2open_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2open_8hpp_source.html b/content/api/latest/c++/posix_2open_8hpp_source.html
index fdefc42..70dabc4 100644
--- a/content/api/latest/c++/posix_2open_8hpp_source.html
+++ b/content/api/latest/c++/posix_2open_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="posix_2open_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</
span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class=
"line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_OPEN_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_OPEN_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sys/stat.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line">
<a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="close_8hpp.html">stout/os/close.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="fcntl_8hpp.html"
>stout/os/fcntl.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifndef O_CLOEXEC</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#error "missing O_CLOEXEC support on this platform"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.h
tml">os</a> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca"> 35</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<int_fd></a> <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">open</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>, <span class="keywordtype">int</span> oflag, <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a8a35dd1207a16dfa8b1d4163176d828c">mode_t</a> <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a> = 0)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="int__
fd_8hpp.html#aea4dbda01c90455f158ffa9b924c2f07">int_fd</a> fd = <a class="code" href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">::open</a>(path.c_str(), oflag, <a class="code" href="namespaceos_1_1stat.html#afc51654ad486693167c300612bf8ebfa">mode</a>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span> (fd < 0) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> fd;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a
name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_OPEN_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_aaf5d5468adc1b85cf9bb7126e70807ca"><div class="ttname"><a href="namespaceos.html#aaf5d5468adc1b85cf9bb7126e70807ca">os::open</a></div><div class="ttdeci">Try< int_fd > open(const std::string &path, int oflag, mode_t mode=0)</div><div class="ttdef"><b>Definition:</b> open.hpp:35</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="close_8hpp_html"><div class="ttname"><a href="close_8hpp.html">close.hpp</a></div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a8a35dd1207a16dfa8b1d4163176d828c"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a8a35dd1207a16dfa8b1d4163176d828c">mode_t</a></div><div class="ttdeci">int mode_t</div><div class="ttdef"><b>Definition:</b> windows.hpp:177</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2os_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2os_8hpp_source.html b/content/api/latest/c++/posix_2os_8hpp_source.html
index 8aefc2c..f5d491e 100644
--- a/content/api/latest/c++/posix_2os_8hpp_source.html
+++ b/content/api/latest/c++/posix_2os_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="rename_8hpp_html"><div class="ttname"><a href="rename_8hpp.html">rename.hpp</a></div></div>
<div class="ttc" id="find_8hpp_html"><div class="ttname"><a href="find_8hpp.html">find.hpp</a></div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< pid_t ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="namespacesvn_html_a018bb955e273aa2e6b6c950005ed6048"><div class="ttname"><a href="namespacesvn.html#a018bb955e273aa2e6b6c950005ed6048">svn::patch</a></div><div class="ttdeci">Try< std::string > patch(const std::string &s, const Diff &diff)</div><div class="ttdef"><b>Definition:</b> svn.hpp:157</div></div>
@@ -72,7 +72,7 @@
<div class="ttc" id="namespaceproc_html_a34396c6140a28f583dc13fee3c3c35d4"><div class="ttname"><a href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a></div><div class="ttdeci">Result< ProcessStatus > status(pid_t pid)</div><div class="ttdef"><b>Definition:</b> proc.hpp:166</div></div>
<div class="ttc" id="killtree_8hpp_html"><div class="ttname"><a href="killtree_8hpp.html">killtree.hpp</a></div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2os_2environment_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2os_2environment_8hpp.html">environment.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2os_2read_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2os_2read_8hpp.html">read.hpp</a></div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="structos_1_1Process_html_a688cf2d2f64d48fc510aa78a952c5ad4"><div class="ttname"><a href="structos_1_1Process.html#a688cf2d2f64d48fc510aa78a952c5ad4">os::Process::session</a></div><div class="ttdeci">const Option< pid_t > session</div><div class="ttdef"><b>Definition:</b> process.hpp:56</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2pipe_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2pipe_8hpp_source.html b/content/api/latest/c++/posix_2pipe_8hpp_source.html
index 58f0001..7559222 100644
--- a/content/api/latest/c++/posix_2pipe_8hpp_source.html
+++ b/content/api/latest/c++/posix_2pipe_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="posix_2pipe_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</
span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class=
"line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <array></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/erro
r.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// Create pipes for interprocess communication.</span></div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51"> 26</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::array<int, 2></a>> <a class="code
" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">pipe</a>()</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  std::array<int, 2> result;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#aada7738a90123ea91fcd4b60693c2a51">pipe</a>(result.data()) < 0) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> 
;}</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_PIPE_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
<div class="ttc" id="try_8hpp_html"><div class="ttname"><a href="try_8hpp.html">try.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2realpath_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2realpath_8hpp_source.html b/content/api/latest/c++/posix_2realpath_8hpp_source.html
index 2faf860..a5e063e 100644
--- a/content/api/latest/c++/posix_2realpath_8hpp_source.html
+++ b/content/api/latest/c++/posix_2realpath_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2realpath_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">
//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cl
ass="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_REALPATH_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_REALPATH_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span
></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespaceos.html#aa533c79d98af12b40b567a851e442373"> 24</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">realpath</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a nam
e="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">char</span> <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>[<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae688d728e1acdfe5988c7db45d6f0166">PATH_MAX</a>];</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">realpath</a>(path.c_str(), <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>) == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span> (errno == ENOENT || errno == ENOTDIR) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</d
iv><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> std::string(temp);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> } <span class="comment">// namespace os {</span></div><div class="line
"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_REALPATH_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="namespaceos_html_aa533c79d98af12b40b567a851e442373"><div class="ttname"><a href="namespaceos.html#aa533c79d98af12b40b567a851e442373">os::realpath</a></div><div class="ttdeci">Result< std::string > realpath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> realpath.hpp:24</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2rename_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2rename_8hpp_source.html b/content/api/latest/c++/posix_2rename_8hpp_source.html
index d709c04..8f8696c 100644
--- a/content/api/latest/c++/posix_2rename_8hpp_source.html
+++ b/content/api/latest/c++/posix_2rename_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2rename_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//
</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div clas
s="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_RENAME_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_RENAME_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stou
t/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a"> 27</a></span> 
<span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">rename</a>(<span class="keyword">const</span> std::string& from, <span class="keyword">const</span> std::string& to)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">rename</a>(from.c_str(), to.c_str()) != 0) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div clas
s="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_RENAME_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="namespaceos_html_a4cdd0a41f89eeb7cc908f3dec0f7f15a"><div class="ttname"><a href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">os::rename</a></div><div class="ttdeci">Try< Nothing > rename(const std::string &from, const std::string &to)</div><div class="ttdef"><b>Definition:</b> rename.hpp:27</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2rm_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2rm_8hpp_source.html b/content/api/latest/c++/posix_2rm_8hpp_source.html
index 1bb6eed..1c9ab50 100644
--- a/content/api/latest/c++/posix_2rm_8hpp_source.html
+++ b/content/api/latest/c++/posix_2rm_8hpp_source.html
@@ -56,7 +56,7 @@
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="namespaceos_html_ac1c8ce3595084d78291f98c2be9f62ba"><div class="ttname"><a href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a></div><div class="ttdeci">Try< Nothing > rm(const std::string &path)</div><div class="ttdef"><b>Definition:</b> rm.hpp:26</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2rmdir_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2rmdir_8hpp_source.html b/content/api/latest/c++/posix_2rmdir_8hpp_source.html
index a2046ae..9a3c189 100644
--- a/content/api/latest/c++/posix_2rmdir_8hpp_source.html
+++ b/content/api/latest/c++/posix_2rmdir_8hpp_source.html
@@ -56,11 +56,11 @@
<div class="ttc" id="namespaceos_html_a84298b990ad52dfd353358427b04ff3f"><div class="ttname"><a href="namespaceos.html#a84298b990ad52dfd353358427b04ff3f">os::rmdir</a></div><div class="ttdeci">Try< Nothing > rmdir(const std::string &directory, bool recursive=true, bool removeRoot=true, bool continueOnError=false)</div><div class="ttdef"><b>Definition:</b> rmdir.hpp:43</div></div>
<div class="ttc" id="namespaceos_html_a69b3969276ffa4cb698b9431ee43bd7c"><div class="ttname"><a href="namespaceos.html#a69b3969276ffa4cb698b9431ee43bd7c">os::exists</a></div><div class="ttdeci">bool exists(const std::string &path)</div><div class="ttdef"><b>Definition:</b> exists.hpp:26</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="exists_8hpp_html"><div class="ttname"><a href="exists_8hpp.html">exists.hpp</a></div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_1_1libraries_html_a41b3cb8b32c32ab2abf7a7aa62de9f18"><div class="ttname"><a href="namespaceos_1_1libraries.html#a41b3cb8b32c32ab2abf7a7aa62de9f18">os::libraries::paths</a></div><div class="ttdeci">std::string paths()</div><div class="ttdef"><b>Definition:</b> os.hpp:136</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespacepath_html_aa86b16a2171cec90bb3337930513ef0f"><div class="ttname"><a href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a></div><div class="ttdeci">std::string join(const std::string &path1, const std::string &path2, const char _separator=os::PATH_SEPARATOR)</div><div class="ttdef"><b>Definition:</b> path.hpp:56</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2shell_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2shell_8hpp_source.html b/content/api/latest/c++/posix_2shell_8hpp_source.html
index 724659a..b70aa8c 100644
--- a/content/api/latest/c++/posix_2shell_8hpp_source.html
+++ b/content/api/latest/c++/posix_2shell_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="posix_2shell_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_SHELL_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_SHELL_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdarg.h></span> <span class="comment">// For va_list, va_start, etc.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <stdio.h></span> <span class="comment">// For ferror, fgets, FILE, pclose, popen.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include
<sys/wait.h></span> <span class="comment">// For waitpid.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <ostream></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <glog/logging.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00027"></a><span
class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="format_8hpp.html">stout/format.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="argv_8hpp.html">stout/os/raw/argv.hpp</a>></
span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespaceos_1_1Shell.html"> 36</a></span> <span class="keyword">namespace </span>Shell {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Canonical constants used as platform-dependent args to `exec`</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// calls. `name` is the command name, `arg0` is the first argument</span></div><div class="line"><a nam
e="l00040"></a><span class="lineno"> 40</span> <span class="comment">// received by the callee, usually the command name and `arg1` is the</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// second command argument received by the callee.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46"> 43</a></span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a> = <span class="stringliteral">"sh"</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997"> 44</a></span> constexpr <span class="keywo
rd">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">arg0</a> = <span class="stringliteral">"sh"</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5"> 45</a></span> constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">arg1</a> = <span class="stringliteral">"-c"</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> } <span class="comment">// namespace Shell {</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class
="keyword">template</span> <<span class="keyword">typename</span>... T></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="namespaceos.html#a0d86320d7799ea761599bc356c02a4fa"> 73</a></span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#a0d86320d7799ea761599bc356c02a4fa">shell</a>(<span class="keyword">const</span> std::string& fmt, <span class="keyword">const</span> T&... t)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::string></a> command = <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">strings::internal::format</a>(fmt, t...);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span cl
ass="keywordflow">if</span> (command.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(command.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  FILE* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::ostringstream stdout;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span c
lass="lineno"> 83</span>  <span class="keywordflow">if</span> ((file = popen(command->c_str(), <span class="stringliteral">"r"</span>)) == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to run '"</span> + command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">char</span> line[1024];</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="co
mment">// NOTE(vinod): Ideally the if and while loops should be interchanged. But</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// we get a broken pipe error if we don't read the output and simply close.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">while</span> (fgets(line, <span class="keyword">sizeof</span>(line), file) != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  stdout << line;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span> (ferror(file) != 0) {</div><div class="line"><a name="l00095"></a><span class="linen
o"> 95</span>  pclose(file); <span class="comment">// Ignoring result since we already have an error.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Error reading output of '"</span> + command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class
="keywordflow">if</span> ((status = pclose(file)) == -1) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to get status of '"</span> + command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a6953e62fd0dec274a397678d31c344b4">WIFSIGNALED</a>(status)) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordfl
ow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="stringliteral">"Running '"</span> + command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() + <span class="stringliteral">"' was interrupted by signal '"</span> +</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a3858fc90369448097210e69437ca7c66">strsignal</a>(WTERMSIG(status)) + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(status) != EXIT_SUCCES
S)) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  LOG(ERROR) << <span class="stringliteral">"Command '"</span> << command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  << <span class="stringliteral">"' failed; this is the output:\n"</span> << stdout.str();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="stringliteral">"Failed to execute '"</span> + command.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() + <span class="stringliteral">"'; the command was either "</span></d
iv><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="stringliteral">"not found or exited with a non-zero exit status: "</span> +</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ae0c8840076dd63d5e2367fff4f7f46f3">WEXITSTATUS</a>(status)));</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> stdout.str();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class=
"line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// Executes a command by calling "/bin/sh -c <command>", and returns</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// after the command has been completed. Returns the exit code on success</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// and `None` on error (e.g., fork/exec/waitpid failed). This function</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// is async signal safe. We return an `Option<int>` instead of a `Try<int>`,</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// because although `Try` does not dynamically allocate,
`Error` uses</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// `std::string`, which is not async signal safe.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">//</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment">// Note: Be cautious about shell injection</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// (https://en.wikipedia.org/wiki/Code_injection#Shell_injection)</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment">// when using this method and use proper validation and sanitization</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// on the `command`. For this reason in general `os::spawn` is</span></div><div c
lass="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// preferred if a shell is not required.</span></div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="namespaceos.html#a75eb48541200e89e498d3d324ffc3089"> 133</a></span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<int></a> <a class="code" href="namespaceos.html#a75eb48541200e89e498d3d324ffc3089">system</a>(<span class="keyword">const</span> std::string& command)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = ::fork();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (pid == -1) {</div><div c
lass="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid == 0) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// In child process.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceos.html#a4b727e301623549c37cdfcd8c553a2c7">::execlp</a>(</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">Shell::name</a>, <a class="code" href="namespaceos_1_1Shell.html#adeacb41dacfa03ad5ceebd9a53582997">Shell::arg0</a>, <a class="code" href="namespaceos_1_1Shell.html#a44f5
0f66f2a231de974b53c9f4384ba5">Shell::arg1</a>, command.c_str(), (<span class="keywordtype">char</span>*)<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  ::exit(127);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// In parent process.</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a48c86262928f59c5c54d0cb0012e2aba">waitpid</a>(pid, &status, 0) == -1) {</div><div class="line"><a name="
l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span> (errno != EINTR) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span cl
ass="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// Executes a command by calling "<command> <arguments...>", and returns after</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// the command has been completed. Returns the exit code on success and `None`</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// on error (e.g., fork/exec/waitpid failed). This function is async signal</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// safe. We return an `Option<int>` instead of a `Try<int>`, because although</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// `Try` does not dynamically allocate, `Error` uses `std::string`
, which is</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// not async signal safe.</span></div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca"> 162</a></span> <span class="keyword">inline</span> <a class="code" href="classOption.html">Option<int></a> <a class="code" href="namespaceos.html#a18f614e5bdf40984c33888a5fa9599ca">spawn</a>(</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">const</span> std::string& command,</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">const</span> std::vector<std::string>& arguments)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="
code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid = ::fork();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (pid == -1) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid == 0) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// In child process.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespaceos.html#a0b80877b34088be8d5ba3eb9b0567ed7">::ex
ecvp</a>(command.c_str(), <a class="code" href="classos_1_1raw_1_1Argv.html">os::raw::Argv</a>(arguments));</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  ::exit(127);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// In parent process.</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">while</span> (::<a class="code" href="namespaceos.html#a48c86262928f59c5c54d0cb0012e2aba">waitpid</a>(pid, &status, 0) == -1) {</div><div class="line"><a name="l00178"></a><span class="lineno">
178</span>  <span class="keywordflow">if</span> (errno != EINTR) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">status</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </di
v><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword">template</span><<span class="keyword">typename</span>... T></div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="namespaceos.html#a4b727e301623549c37cdfcd8c553a2c7"> 189</a></span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#a4b727e301623549c37cdfcd8c553a2c7">execlp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>, T... t)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="namespaceos.html#a4b727e301623549c37cdfcd8c553a2c7">return
::execlp</a>(file, t...);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="namespaceos.html#a0b80877b34088be8d5ba3eb9b0567ed7"> 195</a></span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespaceos.html#a0b80877b34088be8d5ba3eb9b0567ed7">execvp</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacemesos_1_1uri.html#a0a3b30c1eb427c4053aaef120b1f453c">file</a>, <span class="keywordtype">char</span>* <span class="keyword">const</span> argv[])</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno
"> 197</span>  <a class="code" href="namespaceos.html#a1de77f208d0bc72cf79e7eb9a6b487c7">return ::execvp</a>(file, argv);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_SHELL_HPP__</span></div><div class="ttc" id="namespaceos_1_1Shell_html_a44f50f66f2a231de974b53c9f4384ba5"><div class="ttname"><a href="namespaceos_1_1Shell.html#a44f50f66f2a231de974b53c9f4384ba5">os::Shell::arg1</a></div><div class="ttdeci">constexpr const char * arg1</div><div class="ttdef"><b>Definition:</b> shell.hpp:45</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< int ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
[44/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
index 3898ee5..d3c1268 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2version_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2version_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>
60;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12<
/span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_VERSION_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_VERSION_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <cctype></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <cstdint></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <ostream></span></div><div class="line"><a name="l0002
0"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2check_8hpp.html">stout/check.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="numify_8hpp.html">stout/numify.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"
> 26</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// This class provides convenience routines for working with version</span></div><div clas
s="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// numbers. We support the SemVer 2.0.0 (http://semver.org) format,</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// with two differences:</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">//</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// (1) Numeric components with leading zeros are allowed.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// (2) Missing version components are allowed and treated as zero.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</s
pan></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// TODO(neilc): Consider providing a "strict" variant that does not</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// allow these extensions.</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="structVersion.html"> 41</a></span> <span class="keyword">struct </span><a class="code" href="structVersion.html">Version</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Expect the string in the following format:</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// <major>[.<minor>[.<patch>]][-prerelease][+build]</span></div><div cla
ss="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">//</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Missing `minor` or `patch` components are treated as zero.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// `prerelease` is a prerelease label (e.g., "beta", "rc.1");</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// `build` is a build metadata label. Both `prerelease` and `build`</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// consist of one or more dot-separated identifiers. An identifier</span></div><div class="line"><a name="l00051"><
/a><span class="lineno"> 51</span>  <span class="comment">// is a non-empty string containing ASCII alphanumeric characters or</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// hyphens.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Ideally, the version components would be called simply "major",</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// "minor", and "patch". However, GNU libstdc++ already defines</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// these as macros for compatibility reasons (man 3 makedev for more</span></div><div class="line"><a name="l00057">
</a><span class="lineno"> 57</span>  <span class="comment">// information) implicitly included in every compilation.</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structVersion.html#a97d8cbe5a33435ea9d05cf7e41745174"> 58</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<Version></a> <a class="code" href="structVersion.html#a97d8cbe5a33435ea9d05cf7e41745174">parse</a>(<span class="keyword">const</span> std::string& input)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// The input string consists of the numeric components, optionally</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// followed by the prerelease label (prefixed with '-') and/or the</span
></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// build label (prefixed with '+'). We parse the string from right</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// to left: build label (if any), prerelease label (if any), and</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// finally numeric components.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::vector<std::string> buildLabel;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<std::string> buildParts = <a class="code" href="namespacestrings.html#a1f
86a4a73f20056475dc065ec984eb7a">strings::split</a>(input, <span class="stringliteral">"+"</span>, 2);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  CHECK(buildParts.size() == 1 || buildParts.size() == 2);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span> (buildParts.size() == 2) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> std::string& buildString = buildParts.back();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classTry.html">Try<std::vector<std::string></a>> parsed = parseLabel(buildString);</div><div class="line"><a name="l00075"></a
><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (parsed.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Invalid build label: "</span> + parsed.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  buildLabel = parsed.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line
"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::string remainder = buildParts.front();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Parse the prerelease label, if any. Note that the prerelease</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// label might itself contain hyphens.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<std::string> prereleaseLabel;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  std::vector<std::string> prereleaseParts =</div><div class="line"><a nam
e="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::split</a>(remainder, <span class="stringliteral">"-"</span>, 2);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CHECK(prereleaseParts.size() == 1 || prereleaseParts.size() == 2);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (prereleaseParts.size() == 2) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">const</span> std::string& prereleaseString = prereleaseParts.back();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="cl
assTry.html">Try<std::vector<std::string></a>> parsed = parseLabel(prereleaseString);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span> (parsed.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Invalid prerelease label: "</span> + parsed.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  prereleaseLabel = parsed.<a class="code" href="classTry.html#a8bc7
f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  remainder = prereleaseParts.front();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  constexpr <span class="keywordtype">size_t</span> maxNumericComponents = 3;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<std::string> numericComponents = <a class="code" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::split</a>(remainder, <span class="stringliteral">"."</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name
="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (numericComponents.size() > maxNumericComponents) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Version has "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(numericComponents.size()) +</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="stringliteral">" components; maximum "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(maxNumericComponents) +</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="stringliteral">" components allowed"</span>);</div><div class="line"><a name="l0011
2"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  uint32_t versionNumbers[maxNumericComponents] = {0};</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < numericComponents.size(); i++) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classTry.html">Try<uint32_t></a> result = parseNumericIdentifier(numericComponents[i]);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {
</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Invalid version component '"</span> + numericComponents[i] + <span class="stringliteral">"'"</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="stringliteral">": "</span> + result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  versionNumbers[i] = result.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00124
"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <a class="code" href="structVersion.html#a41fb1fed8868043854e28574e9706179">Version</a>(versionNumbers[0],</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  versionNumbers[1],</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  versionNumbers[2],</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  prereleaseLabel,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  buildLabel);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno">
132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// Construct a new Version. The `_prerelease` and `_build` arguments</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// contain lists of prerelease and build identifiers, respectively.</span></div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="structVersion.html#a41fb1fed8868043854e28574e9706179"> 135</a></span>  <a class="code" href="structVersion.html#a41fb1fed8868043854e28574e9706179">Version</a>(uint32_t _majorVersion,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  uint32_t _minorVersion,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  uint32_t _patchVersion,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span cla
ss="keyword">const</span> std::vector<std::string>& _prerelease = {},</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">const</span> std::vector<std::string>& _build = {})</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  : <a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a>(_majorVersion),</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a>(_minorVersion),</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a>(_patchVersion),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="structVersion.html#a7a84d53671e1279
8a9757e6b8260df9c">prerelease</a>(_prerelease),</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="structVersion.html#a59e48748021526b2498be363d1adfde2">build</a>(_build)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// As a sanity check, ensure that the caller has provided</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// valid prerelease and build identifiers.</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& identifier, <a class="code" href="structVersion.html#a7a84d53671e
12798a9757e6b8260df9c">prerelease</a>) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(validateIdentifier(identifier));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& identifier, <a class="code" href="structVersion.html#a59e48748021526b2498be363d1adfde2">build</a>) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(validateIdentifier(identifier));</div><div class="li
ne"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="structVersion.html#a2cd9e31878209449cf6b6871fa8df2ca"> 158</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structVersion.html#a2cd9e31878209449cf6b6871fa8df2ca">operator==</a>(<span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& other)<span class="keyword"> const</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// NOTE: The `build` field is ignored when comparing two versions</span></div><div class="lin
e"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// for equality, per SemVer spec.</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> <a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a> == other.<a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a> &&</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a> == other.<a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a> &&</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a> == other.<a class="code" href="structVersion.html#ade
fd3b36f307963dd8f5ee7a34267067">patchVersion</a> &&</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a> == other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="structVersion.html#a85b8334778605508043fe809becac358"> 168</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structVersion.html#a85b8334778605508043fe809becac358">operator!=</a>(<span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& other)<span class="keyword"> const</span></div><div class="line"><a name="l00169"></a><span cla
ss="lineno"> 169</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// SemVer 2.0.0 defines version precedence (ordering) like so:</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">//</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Precedence MUST be calculated by separating the version into</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// ma
jor, minor, patch and pre-release identifiers in that order</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// (Build metadata does not figure into precedence). Precedence is</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// determined by the first difference when comparing each of these</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// identifiers from left to right as follows: Major, minor, and</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// patch versions are always compared numerically. Example: 1.0.0</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// < 2.0.0 < 2.1.0 < 2.1.1. When major, minor, and patch are</span></div><div class=
"line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// equal, a pre-release version has lower precedence than a normal</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// version. Example: 1.0.0-alpha < 1.0.0. Precedence for two</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// pre-release versions with the same major, minor, and patch</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// version MUST be determined by comparing each dot separated</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// identifier from left to right until a difference is found as</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// fo
llows: identifiers consisting of only digits are compared</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// numerically and identifiers with letters or hyphens are</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="comment">// compared lexically in ASCII sort order. Numeric identifiers</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="comment">// always have lower precedence than non-numeric identifiers. A</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// larger set of pre-release fields has a higher precedence than a</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// smaller set, if all of the preceding identifiers are equal.</span></div><div class="line"><a name="l001
93"></a><span class="lineno"> 193</span>  <span class="comment">// Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta <</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">//</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// NOTE: The `build` field is ignored when comparing two versions</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// for precedence, per the SemVer spec text above.</span></div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="structVersion.html#a5d092507721a8f9768adff3ff1884640"> 198</a></span>  <span class="keywordtype"
>bool</span> <a class="code" href="structVersion.html#a5d092507721a8f9768adff3ff1884640">operator<</a>(<span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& other)<span class="keyword"> const</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// Compare version numbers numerically.</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (<a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a> != other.<a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a>) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="structVers
ion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a> < other.<a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (<a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a> != other.<a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a>) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a> < other.<a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div
><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span> (<a class="code" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a> != other.<a class="code" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a>) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <a class="code" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a> < other.<a class="code" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// If one version has a prerelease label and the other does not,</span
></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// the prerelease version has lower precedence.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (!<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.empty() && other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.empty()) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.empty() && !
other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.empty()) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="comment">// Compare two versions with prerelease labels by proceeding from</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// left to right.</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">size_t</span> minPrereleaseSize = <a class="code" href="option_8hpp.html#a78407a45187058b9b4ef2042accb9bc4">std::min</a>(<
/div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.size(), other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.size());</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < minPrereleaseSize; i++) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// Check whether the two prerelease identifiers can be converted</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// to numbers.</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a clas
s="code" href="classTry.html">Try<uint32_t></a> identifier = parseNumericIdentifier(<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.at(i));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="classTry.html">Try<uint32_t></a> otherIdentifier =</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  parseNumericIdentifier(other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.at(i));</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (identifier.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>() && otherIdentifier.isSome()) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>
  <span class="comment">// Both identifiers are numeric.</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span> (identifier.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() != otherIdentifier.get()) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> identifier.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>() < otherIdentifier.get();</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (identifier.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00238"></a><span class="lineno
"> 238</span>  <span class="comment">// `identifier` is numeric but `otherIdentifier` is not, so</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// `identifier` comes first.</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (otherIdentifier.isSome()) {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// `otherIdentifier` is numeric but `identifier` is not, so</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// `otherIdentifier` comes first.</span></div><div class="line"><a name="l0024
4"></a><span class="lineno"> 244</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// Neither identifier is numeric, so compare via ASCII sort.</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">if</span> (<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.at(i) != other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.at(i)) {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">return</span> <a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</
a>.at(i) < other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.at(i);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// If two versions have different numbers of prerelease labels but</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// they match on the common prefix, the version with the smaller</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// set of labels comes first.</span></div><div cl
ass="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">return</span> <a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.size() < other.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.size();</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="structVersion.html#a8a7d33d5d4bcc5cbac192597328c6f78"> 259</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structVersion.html#a8a7d33d5d4bcc5cbac192597328c6f78">operator></a>(<span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& other)<span class="keyword"> const</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260<
/span> <span class="keyword"> </span>{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> other < *<span class="keyword">this</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="structVersion.html#a7445f8f8e2fb535f786fa0c516e86524"> 264</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structVersion.html#a7445f8f8e2fb535f786fa0c516e86524">operator<=</a>(<span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& other)<span class="keyword"> const</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00266"></a><span class="l
ineno"> 266</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span> < other || *<span class="keyword">this</span> == other;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="structVersion.html#a20345f7cfcb7faad86e01a8a3cc00f78"> 269</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structVersion.html#a20345f7cfcb7faad86e01a8a3cc00f78">operator>=</a>(<span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& other)<span class="keyword"> const</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">r
eturn</span> *<span class="keyword">this</span> > other || *<span class="keyword">this</span> == other;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">friend</span> <span class="keyword">inline</span> std::ostream& <a class="code" href="structVersion.html#a6868b46a8ba132a83ed5fc72c91bcdb0">operator<<</a>(</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  std::ostream& stream,</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& <a class="code" href="namespacemesos_1_1internal.html#a4311a7bd3d79fd1225d08444f8ff758a">version</a>);</div><div class="line"><a name="l00277"></a><
span class="lineno"> 277</span> </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46"> 278</a></span>  <span class="keyword">const</span> uint32_t <a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2"> 279</a></span>  <span class="keyword">const</span> uint32_t <a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a>;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067"> 280</a></span>  <span class="keyword">const</span> uint32_t <a class="code" href="structVersion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a>;</div><div class="line"><a name="l00281"></a><span
class="lineno"><a class="line" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c"> 281</a></span>  <span class="keyword">const</span> std::vector<std::string> <a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>;</div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="structVersion.html#a59e48748021526b2498be363d1adfde2"> 282</a></span>  <span class="keyword">const</span> std::vector<std::string> <a class="code" href="structVersion.html#a59e48748021526b2498be363d1adfde2">build</a>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// Check that a string contains a valid identifier. An identifier is</span></div><div class="
line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// a non-empty string; each character must be an ASCII alphanumeric</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// or hyphen. We allow leading zeros in numeric identifiers, which</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// inconsistent with the SemVer spec.</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">static</span> <a class="code" href="classOption.html">Option<Error></a> validateIdentifier(<span class="keyword">const</span> std::string& identifier)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span> (identifier.empty())
{</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Empty identifier"</span>);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">auto</span> alphaNumericOrHyphen = [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) -> <span class="keywordtype">bool</span> {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">return</span> std::isalnum(c) || c == <span class="charliteral">'-'</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  };</div><div cla
ss="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">auto</span> firstInvalid = std::find_if_not(</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  identifier.begin(), identifier.end(), alphaNumericOrHyphen);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span> (firstInvalid != identifier.end()) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Identifier contains illegal character: "</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span cla
ss="stringliteral">"'"</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(*firstInvalid) + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// Parse a string containing a series of dot-separated identifiers</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <sp
an class="comment">// into a vector of strings; each element of the vector contains a</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// single identifier.</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<std::vector<std::string></a>> parseLabel(<span class="keyword">const</span> std::string& label)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">if</span> (label.empty()) {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Empty label"</span>);</div><div class="line"><a n
ame="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  std::vector<std::string> identifiers = <a class="code" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::split</a>(label, <span class="stringliteral">"."</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& identifier, identifiers) {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="classOption.html">Option<Error></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error
</a> = validateIdentifier(identifier);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (error.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">return</span> error.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>();</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">return</span> identifiers;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div><div class="line">
<a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="comment">// Try to parse the given string as a numeric identifier. According</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="comment">// to the SemVer spec, identifiers that begin with hyphens are</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// considered non-numeric.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="comment">//</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="comment">// TODO(neilc): Consider adding a variant of `numify<T>` that only</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="comment">// supports non-negative
inputs.</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<uint32_t></a> parseNumericIdentifier(<span class="keyword">const</span> std::string& identifier) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacestrings.html#aa5513faacb213c7e097c0d43af43d9c7">strings::startsWith</a>(identifier, <span class="charliteral">'-'</span>)) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Contains leading hyphen"</span>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> 
</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> numify<uint32_t>(identifier);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> };</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="3rdparty_2stout_2include_2stout_2version_8hpp.html#a6868b46a8ba132a83ed5fc72c91bcdb0"> 347</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="structVersion.html#a6868b46a8ba132a83ed5fc72c91bcdb0">operator<<</a>(</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  std::ostream& stream,</div><div class="line"><a name="
l00349"></a><span class="lineno"> 349</span>  <span class="keyword">const</span> <a class="code" href="structVersion.html">Version</a>& <a class="code" href="namespacemesos_1_1internal.html#a4311a7bd3d79fd1225d08444f8ff758a">version</a>)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  stream << version.<a class="code" href="structVersion.html#a1d3270fdc6ccd9f39be84c19bb42de46">majorVersion</a> << <span class="stringliteral">"."</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  << version.<a class="code" href="structVersion.html#a364e53a8f04b31329e3c1c1aeb677bc2">minorVersion</a> << <span class="stringliteral">"."</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  << version.<a class="code" href="structVers
ion.html#adefd3b36f307963dd8f5ee7a34267067">patchVersion</a>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span> (!version.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>.empty()) {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  stream << <span class="stringliteral">"-"</span> << <a class="code" href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a>(<span class="stringliteral">"."</span>, version.<a class="code" href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">prerelease</a>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359
"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span> (!version.<a class="code" href="structVersion.html#a59e48748021526b2498be363d1adfde2">build</a>.empty()) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  stream << <span class="stringliteral">"+"</span> << <a class="code" href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a>(<span class="stringliteral">"."</span>, version.<a class="code" href="structVersion.html#a59e48748021526b2498be363d1adfde2">build</a>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> stream;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> }</div><div clas
s="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor">#endif // __STOUT_VERSION_HPP__</span></div><div class="ttc" id="structVersion_html_a7a84d53671e12798a9757e6b8260df9c"><div class="ttname"><a href="structVersion.html#a7a84d53671e12798a9757e6b8260df9c">Version::prerelease</a></div><div class="ttdeci">const std::vector< std::string > prerelease</div><div class="ttdef"><b>Definition:</b> version.hpp:281</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="structVersion_html_a8a7d33d5d4bcc5cbac192597328c6f78"><div class="ttname"><a href="structVersion.html#a8a7d33d5d4bcc5cbac192597328c6f78">Version::operator></a></div><div class="ttdeci">bool operator>(const Version &other) const </div><div class="ttdef"><b>Definition:</b> version.hpp:259</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
index c9339cf..327e7c5 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2fs_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2windows_2fs_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span
> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">
12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_FS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_WINDOWS_FS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp<
/a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="realpath_8hpp.html">stout/os/realpath.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>
60;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="symlink_8hpp.html">stout/internal/windows/symlink.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespacefs.html">fs</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Returns the total disk size in bytes.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32<
/span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Bytes></a> <a class="code" href="namespacefs.html#a60a9e5ca4119866d80691ce3c4701dc9">size</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a> = <span class="stringliteral">"/"</span>)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="classResult.html">Result<std::string></a> real_path = <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">os::realpath</a>(<a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span> (!real_path.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l0
0036"></a><span class="lineno"> 36</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="stringliteral">"Failed to get realpath for '"</span> + <a class="code" href="namespacepath.html">path</a>+ <span class="stringliteral">"': "</span> +</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  (real_path.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>() ? real_path.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>() : <span class="stringliteral">"No such directory"</span>));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a
><span class="lineno"> 41</span>  ULARGE_INTEGER free_bytes, total_bytes, total_free_bytes;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span> (::GetDiskFreeSpaceExW(</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(real_path.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()).data(),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  &free_bytes,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  &total_bytes,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  &total_free_bytes) == 0) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <
span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="stringliteral">"Error invoking 'GetDiskFreeSpaceEx' on '"</span> + <a class="code" href="namespacepath.html">path</a> + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <a class="code" href="classBytes.html">Bytes</a>(total_bytes.QuadPart);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class=
"lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// Returns relative disk usage of the file system that the given path</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// is mounted at.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<double></a> <a class="code" href="namespacefs.html#ab5ede09379c4793ba4477c7e4573670a">usage</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a> = <span class="stringliteral">"/"</span>)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classResult.html">Result<std::string></a>
real_path = <a class="code" href="namespaceos.html#aa533c79d98af12b40b567a851e442373">os::realpath</a>(<a class="code" href="namespacepath.html">path</a>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (!real_path.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="stringliteral">"Failed to get realpath for '"</span> + <a class="code" href="namespacepath.html">path</a> + <span class="stringliteral">"': "</span> +</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  (real_path.<a class="code" href="classResult.html#aeca16ad17d299ad8
85c9b46c83b12a3d">isError</a>() ? real_path.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>() : <span class="stringliteral">"No such directory"</span>));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  ULARGE_INTEGER free_bytes, total_bytes, total_free_bytes;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (::GetDiskFreeSpaceExW(</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">internal::windows::longpath</a>(real_path.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()).data(),</div><div class="li
ne"><a name="l00069"></a><span class="lineno"> 69</span>  &free_bytes,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  &total_bytes,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  &total_free_bytes) == 0) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="stringliteral">"Error invoking 'GetDiskFreeSpaceEx' on '"</span> + <a class="code" href="namespacepath.html">path</a> + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><di
v class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> used = <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(total_bytes.QuadPart - free_bytes.QuadPart);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> used / total_bytes.QuadPart;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacefs.html#a68279f7514744bb2af74dfce8bb0bbc7">symlink</a>(</div><div class="line"><a name="l00082
"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> std::string& original,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> std::string& link)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceinternal_1_1windows.html#aeb3eff223f2ea4c2899bcc82d8818334">internal::windows::create_symbolic_link</a>(original, link);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// Returns a list of
all files matching the given pattern. This is meant to</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// be a lightweight alternative to glob() - the only supported wildcards are</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// `?` and `*`, and only when they appear at the tail end of `pattern` (e.g.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// `/root/dir/subdir/*.txt` or `/root/dir/subdir/file?.txt`.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<std::string></a>> <a class="code" href="namespacefs.html#a3bd12b75af66bfabbd764e9c66ea80c6">list</a>(<span class="keyword">const</span> std::string& pattern)</div><div class="line"><a name="l00094">
</a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> std::string dirname(<a class="code" href="classPath.html">Path</a>(pattern).dirname());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  std::list<std::string> found_files;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  WIN32_FIND_DATAW found;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> <a class="code" href="classSharedHandle.html">SharedHandle</a> search_handle(</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  ::FindFirstFileW(wide_stringify(pattern).data(), &found),</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  ::FindClose);</div><div class="line"><a name="l00101"></a><span class="lin
eno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span> (search_handle.get() == INVALID_HANDLE_VALUE) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// For compliance with the POSIX implementation (which uses `::glob`),</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// return an empty list instead of an error when the path does not exist.</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">const</span> DWORD <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = ::GetLastError();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span> (error == ERROR_FILE_NOT_FOUND ||
error == ERROR_PATH_NOT_FOUND) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> found_files;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(error, <span class="stringliteral">"FindFirstFile failed"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">do</span> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> 
<span class="keyword">const</span> std::wstring current_file(found.cFileName);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// Ignore `.` and `..` entries.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (current_file.compare(L<span class="stringliteral">"."</span>) != 0 && current_file.compare(L<span class="stringliteral">".."</span>) != 0) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  found_files.push_back(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(dirname, <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(current_file)));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>
  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  } <span class="keywordflow">while</span> (::FindNextFileW(search_handle.get(), &found));</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">const</span> DWORD error = ::GetLastError();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span> (error != ERROR_NO_MORE_FILES) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(error, <span class="stringliteral">"FindNextFile failed"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"
> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> found_files;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> } <span class="comment">// namespace fs {</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#endif // __STOUT_WINDOWS_FS_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="realpath_8hpp_html"><div class="ttname"><a href="realpath_8hpp.html">realpath.hpp</a></div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classSharedHandle_html"><div class="ttname"><a href="classSharedHandle.html">SharedHandle</a></div><div class="ttdef"><b>Definition:</b> windows.hpp:72</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_aa533c79d98af12b40b567a851e442373"><div class="ttname"><a href="namespaceos.html#aa533c79d98af12b40b567a851e442373">os::realpath</a></div><div class="ttdeci">Result< std::string > realpath(const std::string &path)</div><div class="ttdef"><b>Definition:</b> realpath.hpp:24</div></div>
[22/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2su_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2su_8hpp_source.html b/content/api/latest/c++/posix_2su_8hpp_source.html
index 83633ea..5cd72d7 100644
--- a/content/api/latest/c++/posix_2su_8hpp_source.html
+++ b/content/api/latest/c++/posix_2su_8hpp_source.html
@@ -55,14 +55,14 @@
<a href="posix_2su_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span c
lass="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distrib
uted under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_SU_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_OS_POSIX_SU_HPP__</span></div><div class="l
ine"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <grp.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <limits.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <pwd.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <sys/syscall.h>
;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="nothing_8
hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="unreachable_8hpp.html">stout/unreachable.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <sp
an class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceos.html#ab20654c3bd05280d32833e654c61b1e4"> 41</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<uid_t></a> <a class="code" href="namespaceos.html#ab20654c3bd05280d32833e654c61b1e4">getuid</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (<a class="code" href="namespa
ceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>.isNone()) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="namespaceos.html#ab20654c3bd05280d32833e654c61b1e4">return ::getuid</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = sysconf(_SC_GETPW_R_SIZE_MAX);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (size == -1) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Initial value for buffer size.</span></div><div class="line"><a name="l00050"></a>
<span class="lineno"> 50</span>  size = 1024;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">struct </span><a class="code" href="structpasswd.html">passwd</a> pwd;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">struct </span><a class="code" href="structpasswd.html">passwd</a>* result;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">char</span>* buffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[<a class="code" href="namespaceos_1_1s
tat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>];</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (getpwnam_r(<a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>->c_str(), &pwd, buffer, <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>, &result) == 0) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Per POSIX, if the user name is not found, `getpwnam_r` returns</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// zero and sets `result` to the null pointer. (Linux behaves</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// differently for in
valid user names; see below).</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> (result == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// Entry found.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp
.html#afc544433253791fc5f87b8203c9b6e63">uid_t</a> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a> = pwd.<a class="code" href="structpasswd.html#aa6e0e62ee3cf5152f2697a0104f627c1">pw_uid</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lin
eno"> 74</span>  <span class="keywordflow">if</span> (errno == ERANGE) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Buffer too small; enlarge it and retry.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  size *= 2;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// According to POSIX, a non-zero return value from `getpwnam_r`</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// indicates an error. However, some version
s of glibc return</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// non-zero and set errno to ENOENT, ESRCH, EBADF, EPERM,</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// EINVAL, or other values if the user name was invalid and/or</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// not found. POSIX and Linux manpages also list certain errno</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// values (e.g., EIO, EMFILE) as definitely indicating an error.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">//</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Hence, we check
for those specific error values and return an</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// error to the caller; for any errno value not in that list, we</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// assume the user name wasn't found.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">//</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// TODO(neilc): Consider retrying on EINTR.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (errno != EIO &&</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  errno != EINTR &&</div><div class="line"><a name="l00094"></a><span
class="lineno"> 94</span>  errno != EMFILE &&</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  errno != ENFILE &&</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  errno != ENOMEM) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to get username information"</span>);</div><div class="line"><a name="l00101"></a><span class="lineno">
101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceos.html#ae4b3b2f098e140e75c4bcc5dc15abf30"> 108</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#ae4b3b2f098e140e75c4bcc5dc15abf30">setuid</a>(<a class="code" href="3r
dparty_2stout_2include_2stout_2windows_8hpp.html#afc544433253791fc5f87b8203c9b6e63">uid_t</a> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#ae4b3b2f098e140e75c4bcc5dc15abf30">setuid</a>(uid) == -1) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" hre
f="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="namespaceos.html#a3d46f808886a786c2daab6eb1d81b206"> 118</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<gid_t></a> <a class="code" href="namespaceos.html#a3d46f808886a786c2daab6eb1d81b206">getgid</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a nam
e="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>.isNone()) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="namespaceos.html#a3d46f808886a786c2daab6eb1d81b206">return ::getgid</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = sysconf(_SC_GETPW_R_SIZE_MAX);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span> (size == -1) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</
span>  <span class="comment">// Initial value for buffer size.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  size = 1024;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">struct </span><a class="code" href="structpasswd.html">passwd</a> pwd;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">struct </span><a class="code" href="structpasswd.html">passwd</a>* result;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">char</spa
n>* buffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>];</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span> (getpwnam_r(<a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>->c_str(), &pwd, buffer, <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>, &result) == 0) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// Per POSIX, if the user name is not found, `getpwnam_r` returns</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// zero and sets `result` to the null pointer. (Linux behaves</span></div><div
class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// differently for invalid user names; see below).</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span> (result == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// Entry found.</span></div><div class="line"><a name="l0
0145"></a><span class="lineno"> 145</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a78ecefd3a9f3f0c110b9f6f038b690eb">gid_t</a> gid = pwd.<a class="code" href="structpasswd.html#aefbacfb7dc7f7f47313d08707253e4c6">pw_gid</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> gid;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordf
low">if</span> (errno == ERANGE) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Buffer too small; enlarge it and retry.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  size *= 2;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// According to POSIX, a non-zero return value from `getpwnam_r`</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// indicates an error. However, some versions of glibc return</span></div><div class="line"><a
name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// non-zero and set errno to ENOENT, ESRCH, EBADF, EPERM,</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// EINVAL, or other values if the user name was invalid and/or</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// not found. POSIX and Linux manpages also list certain errno</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// values (e.g., EIO, EMFILE) as definitely indicating an error.</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">//</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// Hence, we check for those specific error values and return an</spa
n></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// error to the caller; for any errno value not in that list, we</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// assume the user name wasn't found.</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">//</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// TODO(neilc): Consider retrying on EINTR.</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (errno != EIO &&</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  errno != EINTR &&</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  errno
!= EMFILE &&</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  errno != ENFILE &&</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  errno != ENOMEM) {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to get username information"</span>);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a
name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="unreachable_8hpp.html#a0bc63b24b654ca433be7b97a3edde132">UNREACHABLE</a>();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="namespaceos.html#a34d621fcc9ff30cfe4869b40644a3b2b"> 185</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a34d621fcc9ff30cfe4869b40644a3b2b">setgid</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a
78ecefd3a9f3f0c110b9f6f038b690eb">gid_t</a> gid)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a34d621fcc9ff30cfe4869b40644a3b2b">setgid</a>(gid) == -1) {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> }</div><div cla
ss="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="namespaceos.html#a5f12facb4a752145ca6b7657bb6b35e7"> 195</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::vector<gid_t></a>> <a class="code" href="namespaceos.html#a5f12facb4a752145ca6b7657bb6b35e7">getgrouplist</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// TODO(jieyu): Consider adding a 'gid' parameter and avoid calling</span></div><div class="line"><a name="l00198"></a><span class="lineno">
198</span>  <span class="comment">// getgid here. In some cases, the primary gid might be known.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="classResult.html">Result<gid_t></a> gid = <a class="code" href="namespaceos.html#a3d46f808886a786c2daab6eb1d81b206">os::getgid</a>(user);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> (!gid.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to get the gid of the user: "</span> +</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  (gid.<a class="code" href="classResult.html#aeca16ad17d29
9ad885c9b46c83b12a3d">isError</a>() ? gid.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>() : <span class="stringliteral">"group not found"</span>));</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#ifdef __APPLE__</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// TODO(gilbert): Instead of setting 'ngroups' as a large value,</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// we should figure out a way to probe 'ngroups' on OS X. Currently</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// neither &
#39;_SC_NGROUPS_MAX' nor 'NGROUPS_MAX' is appropriate,</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// because both are fixed as 16 on Darwin kernel, which is the</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">// cache size.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">int</span> ngroups = 65536;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordtype">int</span> gids[ngroups];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordtype">int</span> ngroups = NGROUPS_MAX;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</s
pan>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a78ecefd3a9f3f0c110b9f6f038b690eb">gid_t</a> gids[ngroups];</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a5f12facb4a752145ca6b7657bb6b35e7">getgrouplist</a>(user.c_str(), gid.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), gids, &ngroups) == -1) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line
"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> std::vector<gid_t>(gids, gids + ngroups);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="namespaceos.html#a84b1082a4cacbb147c1ded91d860b4b5"> 225</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a84b1082a4cacbb147c1ded91d860b4b5">setgroups</a>(</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> std::vector<gid_t>& gids,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <
span class="keyword">const</span> <a class="code" href="classOption.html">Option<uid_t></a>& <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordtype">int</span> ngroups = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(gids.size());</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a78ecefd3a9f3f0c110b9f6f038b690eb">gid_t</a> _gids[ngroups];</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywo
rdflow">for</span> (<span class="keywordtype">int</span> i = 0; i < ngroups; i++) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  _gids[i] = gids[i];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor">#ifdef __APPLE__</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// Cannot simply call 'setgroups' here because it only updates</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// the list of groups in kernel cache, but not the ones in</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// opendirectoryd. Darwin kernel
caches part of the groups in</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// kernel, and the rest in opendirectoryd.</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// For more detail please see:</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// https://github.com/practicalswift/osx/blob/master/src/samba/patches/support-darwin-initgroups-syscall // NOLINT</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">int</span> maxgroups = sysconf(_SC_NGROUPS_MAX);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span> (maxgroups == -1) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span> <a
class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to get sysconf(_SC_NGROUPS_MAX)"</span>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span> (ngroups > maxgroups) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  ngroups = maxgroups;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>.isNone()) {</div><div class="line"><a name="l00253">
</a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="stringliteral">"The uid of the user who is associated with the group "</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="stringliteral">"list we are setting is missing"</span>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// NOTE: By default, the maxgroups on Darwin kernel is fixed</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// as 16. If we have more than 16 gids to se
t for a specific</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// user, then SYS_initgroups would send up to 16 of them to</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// kernel cache, while the rest would still be performed</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="comment">// correctly by the kernel (asking Directory Service to resolve</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">// the groups membership).</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span> (::syscall(SYS_initgroups, ngroups, _gids, <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>.get()) == -1) {</div><div class="line"><a name="l00265"
></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#a84b1082a4cacbb147c1ded91d860b4b5">setgroups</a>(ngroups, _gids) == -1) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor">#endif</span><
/div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960"> 277</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<std::string></a> <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>(<a class="code" href="classOption.html">Option<uid_t></a> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62f
c25b56f6915800eb">uid</a> = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>.isNone()) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a> = <a class="code" href="namespaceos.html#ab20654c3bd05280d32833e654c61b1e4">::getuid</a>();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#
a7a116891923bc8b5d8c50f78da8657be">size</a> = sysconf(_SC_GETPW_R_SIZE_MAX);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (size == -1) {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// Initial value for buffer size.</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  size = 1024;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">struct </span><a class="code" href="structpasswd.html">passwd</a> pwd;</div><div class="line
"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">struct </span><a class="code" href="structpasswd.html">passwd</a>* result;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordtype">char</span>* buffer = <span class="keyword">new</span> <span class="keywordtype">char</span>[<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>];</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (getpwuid_r(<a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>.get(), &pwd, buffer, <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>, &result) == 0) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> 
<span class="comment">// getpwuid_r will return 0 but set result == nullptr if the uid is</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// not found.</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span> (result == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  std::str
ing <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>(pwd.<a class="code" href="structpasswd.html#a6de92e6d2e3dd348ee82472d2b219556">pw_name</a>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">delete</span>[] buffer;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">if</sp
an> (errno != ERANGE) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// getpwuid_r set ERANGE so try again with a larger buffer.</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  size *= 2;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> }</div><div class="line"><a name="l00317"></a><span class="lineno">
317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="namespaceos.html#acae67fc8bd809c609bf1ffb281d921c6"> 319</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#acae67fc8bd809c609bf1ffb281d921c6">su</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">user</a>)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <a class="code" href="classResult.html">Result<gid_t></a> gid = <a class="code" href="namespaceos.html#a3d46f808886a786c2daab6eb1d81b206">os::getgid</a>(user);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> 
<span class="keywordflow">if</span> (gid.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>() || gid.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to getgid: "</span> +</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  (gid.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>() ? gid.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>() : <span class="stringliteral">"unknown user"</span>));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (::<a class="code" href="
namespaceos.html#a34d621fcc9ff30cfe4869b40644a3b2b">setgid</a>(gid.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>())) {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to set gid"</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">// Set the supplementary group list. We ignore EPERM because</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="comment">// performing a no-op call (switching to same group) still</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331
</span>  <span class="comment">// requires being privileged, unlike 'setgid' and 'setuid'.</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span> (::initgroups(user.c_str(), gid.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()) == -1 && errno != EPERM) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to set supplementary groups"</span>);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="classResult.html">Result<uid_t></a> <a class="code
" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a> = <a class="code" href="namespaceos.html#ab20654c3bd05280d32833e654c61b1e4">os::getuid</a>(user);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span> (uid.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>() || uid.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to getuid: "</span> +</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  (uid.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>() ? uid.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">erro
r</a>() : <span class="stringliteral">"unknown user"</span>));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#ae4b3b2f098e140e75c4bcc5dc15abf30">setuid</a>(uid.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>())) {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to setuid"</span>);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  }</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing
.html">Nothing</a>();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_SU_HPP__</span></div><div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a96066cfc01f1f62fc25b56f6915800eb"><div class="ttname"><a href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">os::stat::uid</a></div><div class="ttdeci">Try< uid_t > uid(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:213</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classResult_html_a521adf96f5c27d26d6b1d580aae8aaee"><div class="ttname"><a href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">Result::error</a></div><div class="ttdeci">static Result< T > error(const std::string &message)</div><div class="ttdef"><b>Definition:</b> result.hpp:53</div></div>
<div class="ttc" id="namespaceos_html_a698aa27e5ea6b1dc1c190b978c2f7960"><div class="ttname"><a href="namespaceos.html#a698aa27e5ea6b1dc1c190b978c2f7960">os::user</a></div><div class="ttdeci">Result< std::string > user(Option< uid_t > uid=None())</div><div class="ttdef"><b>Definition:</b> su.hpp:277</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="structpasswd_html_aefbacfb7dc7f7f47313d08707253e4c6"><div class="ttname"><a href="structpasswd.html#aefbacfb7dc7f7f47313d08707253e4c6">passwd::pw_gid</a></div><div class="ttdeci">gid_t pw_gid</div><div class="ttdef"><b>Definition:</b> pwd.hpp:30</div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2xattr_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2xattr_8hpp_source.html b/content/api/latest/c++/posix_2xattr_8hpp_source.html
index e31d594..90f3fa1 100644
--- a/content/api/latest/c++/posix_2xattr_8hpp_source.html
+++ b/content/api/latest/c++/posix_2xattr_8hpp_source.html
@@ -59,7 +59,7 @@
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="namespaceos_html_aa5f9db540e463927feff9b1e20de9ded"><div class="ttname"><a href="namespaceos.html#aa5f9db540e463927feff9b1e20de9ded">os::setxattr</a></div><div class="ttdeci">Try< Nothing > setxattr(const std::string &path, const std::string &name, const std::string &value, int flags)</div><div class="ttdef"><b>Definition:</b> xattr.hpp:31</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
<div class="ttc" id="decoder_8hpp_html_abb0829cce9dd20a40ae0d86890ae85c6"><div class="ttname"><a href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a></div><div class="ttdeci">#define flags</div><div class="ttdef"><b>Definition:</b> decoder.hpp:18</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/proc_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/proc_8hpp_source.html b/content/api/latest/c++/proc_8hpp_source.html
index 1235724..f9a917d 100644
--- a/content/api/latest/c++/proc_8hpp_source.html
+++ b/content/api/latest/c++/proc_8hpp_source.html
@@ -59,7 +59,7 @@
<div class="ttc" id="structproc_1_1ProcessStatus_html_a3ae685cf9da43d9751f12dbbd7384c18"><div class="ttname"><a href="structproc_1_1ProcessStatus.html#a3ae685cf9da43d9751f12dbbd7384c18">proc::ProcessStatus::pgrp</a></div><div class="ttdeci">const pid_t pgrp</div><div class="ttdef"><b>Definition:</b> proc.hpp:130</div></div>
<div class="ttc" id="structproc_1_1ProcessStatus_html_a20a702269174af3c3ef88540baf037ec"><div class="ttname"><a href="structproc_1_1ProcessStatus.html#a20a702269174af3c3ef88540baf037ec">proc::ProcessStatus::signal</a></div><div class="ttdeci">const unsigned long signal</div><div class="ttdef"><b>Definition:</b> proc.hpp:155</div></div>
<div class="ttc" id="structproc_1_1ProcessStatus_html_a0bd23f09e3d1bade63c0b5c3164ae41d"><div class="ttname"><a href="structproc_1_1ProcessStatus.html#a0bd23f09e3d1bade63c0b5c3164ae41d">proc::ProcessStatus::cmajflt</a></div><div class="ttdeci">const unsigned long cmajflt</div><div class="ttdef"><b>Definition:</b> proc.hpp:138</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="structproc_1_1ProcessStatus_html_aac90b41880a20697bf7d227859f5f2ef"><div class="ttname"><a href="structproc_1_1ProcessStatus.html#aac90b41880a20697bf7d227859f5f2ef">proc::ProcessStatus::tpgid</a></div><div class="ttdeci">const pid_t tpgid</div><div class="ttdef"><b>Definition:</b> proc.hpp:133</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< pid_t ></a></div></div>
<div class="ttc" id="structproc_1_1ProcessStatus_html_a7a541d6b5a176cc2f0c3888f888d4c62"><div class="ttname"><a href="structproc_1_1ProcessStatus.html#a7a541d6b5a176cc2f0c3888f888d4c62">proc::ProcessStatus::vsize</a></div><div class="ttdeci">const unsigned long vsize</div><div class="ttdef"><b>Definition:</b> proc.hpp:148</div></div>
[31/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/mac_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/mac_8hpp_source.html b/content/api/latest/c++/mac_8hpp_source.html
index 76f75d8..92e3915 100644
--- a/content/api/latest/c++/mac_8hpp_source.html
+++ b/content/api/latest/c++/mac_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">mac.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="mac_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></d
iv><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><
a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_MAC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_MAC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifndef __WINDOWS__</span></d
iv><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <arpa/inet.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <linux/if.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <linux/if_packet.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</spa
n> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <net/ethernet.h></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#ifdef __APPLE__</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <net/if.h></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <net/if_dl.h></span></div><div class="line"><a name="l00036"></a><span class=
"lineno"> 36</span> <span class="preprocessor">#include <net/if_types.h></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <sys/socket.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a
><span class="lineno"> 44</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class=
"preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// Network utilities.</span></div><di
v class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// Represents a MAC address. A MAC address is a 48-bit unique</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// identifier assigned to a network interface for communications on</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// the physical network segment. We use a byte array (in transmission</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// order) to represent a MAC address. For example, for a MAC address</span></div><div class="line"><a name=
"l00063"></a><span class="lineno"> 63</span> <span class="comment">// 01:23:34:67:89:ab, the format is shown as follows:</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">//</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// MSB LSB</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// | |</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// v v</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// +--------+--------+--------+--------+--------+--------+</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>
 <span class="comment">// |bytes[0]|bytes[1]|bytes[2]|bytes[3]|bytes[4]|bytes[5]|</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// +--------+--------+--------+--------+--------+--------+</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// 01 : 23 : 45 : 67 : 89 : ab</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// NOLINT(readability/ending_punctuation)</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html"> 74</a></span> <span class="keyword">class </span><a class="code" href="classnet_1_1MAC.html">MAC</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&
#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Parse a MAC address (e.g., 01:23:34:67:89:ab).</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#a0dfd0ca6e46f22afa5ac8331b0f5988a"> 78</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<MAC></a> <a class="code" href="classnet_1_1MAC.html#a0dfd0ca6e46f22afa5ac8331b0f5988a">parse</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<std::string> tokens = <a class="code" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::sp
lit</a>(s, <span class="stringliteral">":"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (tokens.size() != 6) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Invalid format. Expecting xx:xx:xx:xx:xx:xx"</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">auto</span> isValidHexDigit = [](<span class="keywordtype">char</span> c) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> (c >= <span class="charliter
al">'0'</span> && c <= <span class="charliteral">'9'</span>) ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  (c >= <span class="charliteral">'a'</span> && c <= <span class="charliteral">'f'</span>) ||</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  (c >= <span class="charliteral">'A'</span> && c <= <span class="charliteral">'F'</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  uint8_t bytes[6];</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 6; i++) {</div><div
class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (tokens[i].<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>() != 2) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not a two digit hex number"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (!isValidHexDigit(tokens[i][0]) ||</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  !isValidHexDigit(tokens[i][1])) {</div><div class="line"><a name="l00099"></a><span cl
ass="lineno"> 99</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not a valid hex number"</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* str = tokens[i].c_str();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">char</span> *endptr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value = strtoul(str, &endptr, 16);</div><div class="line"><a name="l00105"></a><span c
lass="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  assert(endptr == str + 2);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  assert(value < 256);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  bytes[i] = <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(value);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <a class="code" href="classnet_1_1MAC.html#aaec2bf803b833a5ca27faf1873826d49">MAC</a>(bytes);</div><div class="line"><a name="l00113"></a><span class="lineno"
> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Constructs a MAC address from a byte array.</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#aaec2bf803b833a5ca27faf1873826d49"> 116</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnet_1_1MAC.html#aaec2bf803b833a5ca27faf1873826d49">MAC</a>(<span class="keyword">const</span> uint8_t (&_bytes)[6])</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 6; i++) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  bytes[i] = _
bytes[i];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Returns the byte at the given index. For example, for a MAC</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// address 01:23:45:67:89:ab, mac[0] = 01, mac[1] = 23 and etc.</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#af925648a11ff2d5ab14cf4e608e2048d"> 125</a></span>  uint8_t <a class="code" href="classnet_1_1MAC.html#af925648a11ff2d5ab14cf4e608e2048d">operator[]</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01
ef1c80706b1e07e8a6d3f">index</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (index >= 6) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Invalid index specified in MAC::operator[]\n"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> bytes[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>];<
/div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#a0a1331d9bec0070e02eadbed544e50a0"> 134</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnet_1_1MAC.html#a0a1331d9bec0070e02eadbed544e50a0">operator==</a>(<span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">MAC</a>& that)<span class="keyword"> const</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 6; i++) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <
span class="keywordflow">if</span> (bytes[i] != that.bytes[i]) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#aef1d6979a1b533061eb9f6640a729363"> 144</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnet_1_1MAC.html#aef1
d6979a1b533061eb9f6640a729363">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">MAC</a>& that)<span class="keyword"> const</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == that);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Byte array of this MAC address (in transmission order).</span></div><div class="line"><a name="l00151"></a><span class="lineno
"> 151</span>  uint8_t bytes[6];</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> };</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// Returns the standard string format (IEEE 802) of the given MAC</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// address, which contains six groups of two hexadecimal digits,</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// separated by colons, in transmission order (e.g.,</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// 01:23:45:67:89:ab).</span></div><div class="line"><a name="l00159"></a><spa
n class="lineno"><a class="line" href="namespacenet.html#a801fe1714d4b21629f8cda290c39baf6"> 159</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespacenet.html#ab2ed5173deb8f3daf281f9828613956d">operator<<</a>(std::ostream& stream, <span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">MAC</a>& <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">char</span> buffer[18];</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  sprintf(</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  buffer,</div><div class="line"><a name="l001
65"></a><span class="lineno"> 165</span>  <span class="stringliteral">"%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx"</span>,</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  mac[0],</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  mac[1],</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  mac[2],</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  mac[3],</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  mac[4],</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  mac[5]);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> stream << buffer;</div><div class="line"><a name="l00174
"></a><span class="lineno"> 174</span> }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment">// NOTE: These headers are placed here because the platform specific code</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// requires classes defined in this file.</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span
class="preprocessor">#include <<a class="code" href="windows_2mac_8hpp.html">stout/windows/mac.hpp</a>></span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#include <<a class="code" href="posix_2mac_8hpp.html">stout/posix/mac.hpp</a>></span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#endif // __STOUT_MAC_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="mac_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></d
iv><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><
a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_MAC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_MAC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdint.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifndef __WINDOWS__</span></d
iv><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <arpa/inet.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifdef __linux__</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <linux/if.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <linux/if_packet.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</spa
n> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <net/ethernet.h></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#ifdef __APPLE__</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <net/if.h></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <net/if_dl.h></span></div><div class="line"><a name="l00036"></a><span class=
"lineno"> 36</span> <span class="preprocessor">#include <net/if_types.h></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#ifndef __WINDOWS__</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <sys/socket.h></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a
><span class="lineno"> 44</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <<a class="code" href="abort_8hpp.html">stout/abort.hpp</a>></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class=
"preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// Network utilities.</span></div><di
v class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// Represents a MAC address. A MAC address is a 48-bit unique</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// identifier assigned to a network interface for communications on</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// the physical network segment. We use a byte array (in transmission</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// order) to represent a MAC address. For example, for a MAC address</span></div><div class="line"><a name=
"l00063"></a><span class="lineno"> 63</span> <span class="comment">// 01:23:34:67:89:ab, the format is shown as follows:</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">//</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// MSB LSB</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// | |</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// v v</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// +--------+--------+--------+--------+--------+--------+</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>
 <span class="comment">// |bytes[0]|bytes[1]|bytes[2]|bytes[3]|bytes[4]|bytes[5]|</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// +--------+--------+--------+--------+--------+--------+</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// 01 : 23 : 45 : 67 : 89 : ab</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// NOLINT(readability/ending_punctuation)</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html"> 74</a></span> <span class="keyword">class </span><a class="code" href="classnet_1_1MAC.html">MAC</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&
#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Parse a MAC address (e.g., 01:23:34:67:89:ab).</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#a0dfd0ca6e46f22afa5ac8331b0f5988a"> 78</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<MAC></a> <a class="code" href="classnet_1_1MAC.html#a0dfd0ca6e46f22afa5ac8331b0f5988a">parse</a>(<span class="keyword">const</span> std::string& s)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<std::string> tokens = <a class="code" href="namespacestrings.html#a1f86a4a73f20056475dc065ec984eb7a">strings::sp
lit</a>(s, <span class="stringliteral">":"</span>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (tokens.size() != 6) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Invalid format. Expecting xx:xx:xx:xx:xx:xx"</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">auto</span> isValidHexDigit = [](<span class="keywordtype">char</span> c) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">return</span> (c >= <span class="charliter
al">'0'</span> && c <= <span class="charliteral">'9'</span>) ||</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  (c >= <span class="charliteral">'a'</span> && c <= <span class="charliteral">'f'</span>) ||</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  (c >= <span class="charliteral">'A'</span> && c <= <span class="charliteral">'F'</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  uint8_t bytes[6];</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 6; i++) {</div><div
class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (tokens[i].<a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a>() != 2) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not a two digit hex number"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (!isValidHexDigit(tokens[i][0]) ||</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  !isValidHexDigit(tokens[i][1])) {</div><div class="line"><a name="l00099"></a><span cl
ass="lineno"> 99</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not a valid hex number"</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* str = tokens[i].c_str();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">char</span> *endptr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> value = strtoul(str, &endptr, 16);</div><div class="line"><a name="l00105"></a><span c
lass="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  assert(endptr == str + 2);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  assert(value < 256);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  bytes[i] = <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(value);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <a class="code" href="classnet_1_1MAC.html#aaec2bf803b833a5ca27faf1873826d49">MAC</a>(bytes);</div><div class="line"><a name="l00113"></a><span class="lineno"
> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Constructs a MAC address from a byte array.</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#aaec2bf803b833a5ca27faf1873826d49"> 116</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnet_1_1MAC.html#aaec2bf803b833a5ca27faf1873826d49">MAC</a>(<span class="keyword">const</span> uint8_t (&_bytes)[6])</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 6; i++) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  bytes[i] = _
bytes[i];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Returns the byte at the given index. For example, for a MAC</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// address 01:23:45:67:89:ab, mac[0] = 01, mac[1] = 23 and etc.</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#af925648a11ff2d5ab14cf4e608e2048d"> 125</a></span>  uint8_t <a class="code" href="classnet_1_1MAC.html#af925648a11ff2d5ab14cf4e608e2048d">operator[]</a>(<span class="keywordtype">size_t</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01
ef1c80706b1e07e8a6d3f">index</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (index >= 6) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Invalid index specified in MAC::operator[]\n"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> bytes[<a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>];<
/div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#a0a1331d9bec0070e02eadbed544e50a0"> 134</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnet_1_1MAC.html#a0a1331d9bec0070e02eadbed544e50a0">operator==</a>(<span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">MAC</a>& that)<span class="keyword"> const</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < 6; i++) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <
span class="keywordflow">if</span> (bytes[i] != that.bytes[i]) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classnet_1_1MAC.html#aef1d6979a1b533061eb9f6640a729363"> 144</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnet_1_1MAC.html#aef1
d6979a1b533061eb9f6640a729363">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">MAC</a>& that)<span class="keyword"> const</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == that);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Byte array of this MAC address (in transmission order).</span></div><div class="line"><a name="l00151"></a><span class="lineno
"> 151</span>  uint8_t bytes[6];</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> };</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// Returns the standard string format (IEEE 802) of the given MAC</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// address, which contains six groups of two hexadecimal digits,</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// separated by colons, in transmission order (e.g.,</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// 01:23:45:67:89:ab).</span></div><div class="line"><a name="l00159"></a><spa
n class="lineno"><a class="line" href="namespacenet.html#a801fe1714d4b21629f8cda290c39baf6"> 159</a></span> <span class="keyword">inline</span> std::ostream& <a class="code" href="namespacenet.html#ab2ed5173deb8f3daf281f9828613956d">operator<<</a>(std::ostream& stream, <span class="keyword">const</span> <a class="code" href="classnet_1_1MAC.html">MAC</a>& <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">char</span> buffer[18];</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  sprintf(</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  buffer,</div><div class="line"><a name="l001
65"></a><span class="lineno"> 165</span>  <span class="stringliteral">"%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx"</span>,</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  mac[0],</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  mac[1],</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  mac[2],</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  mac[3],</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  mac[4],</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  mac[5]);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> stream << buffer;</div><div class="line"><a name="l00174
"></a><span class="lineno"> 174</span> }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment">// NOTE: These headers are placed here because the platform specific code</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// requires classes defined in this file.</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span
class="preprocessor">#include <<a class="code" href="windows_2mac_8hpp.html">stout/windows/mac.hpp</a>></span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor">#include <<a class="code" href="posix_2mac_8hpp.html">stout/posix/mac.hpp</a>></span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#endif // __STOUT_MAC_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="posix_2mac_8hpp_html"><div class="ttname"><a href="posix_2mac_8hpp.html">mac.hpp</a></div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/memory__profiler_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/memory__profiler_8hpp_source.html b/content/api/latest/c++/memory__profiler_8hpp_source.html
index 0bd8506..35d1db6 100644
--- a/content/api/latest/c++/memory__profiler_8hpp_source.html
+++ b/content/api/latest/c++/memory__profiler_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="memory__profiler_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comme
nt">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div
class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __PROCESS_MEMORY_PROFILER_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __PROCESS_MEMORY_PROFILER_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <functional></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="future_8hpp.html">process/future.hpp</a>></span></div><div class="line"><a name="l00020"><
/a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2libprocess_2include_2process_2http_8hpp.html">process/http.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="libprocess_2include_2process_2process_8hpp.html">process/process.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="prep
rocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// This class provides support for memory profiling and introspection</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// using the capabilities of the jemalloc memory allocator.</span></div><div clas
s="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// For user-facing documentation on how to use the facilities provided</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// by this class, see `docs/memory-profiling.md` in the mesos repository.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">//</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// For more details about the implementation, see the comments</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// in `memory_profiler.cpp`.</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classproc
ess_1_1MemoryProfiler.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1MemoryProfiler.html">MemoryProfiler</a> : <span class="keyword">public</span> <a class="code" href="classprocess_1_1Process.html">Process</a><MemoryProfiler></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="classprocess_1_1MemoryProfiler.html#afe31588e5286cc4f9a617b19b184431a">MemoryProfiler</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& authenticationRealm);</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classprocess_1_1MemoryProfiler.html#afe31a5aff47b57b2adedfb159a690b88"> 42</a></span>&#
160; <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1MemoryProfiler.html#afe31a5aff47b57b2adedfb159a690b88">~MemoryProfiler</a>() {}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classprocess_1_1MemoryProfiler.html#a51a6bf768a165ed59c410ce5c08b8838">initialize</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">static</span> <span class="keyword">const</spa
n> std::string START_HELP();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string STOP_HELP();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string DOWNLOAD_RAW_HELP();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string DOWNLOAD_TEXT_HELP();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string DOWNLOAD_GRAPH_HELP();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string STATISTICS_HELP();</div><div class="line"><a name
="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::string STATE_HELP();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// HTTP endpoints.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Refer to the `HELP()` messages for detailed documentation.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Starts memory profiling.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classprocess_1_1Future.html">Future<http::Response></a> start(</div><div class="line"><a name="l00061"></a><span
class="lineno"> 61</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>& <a class="code" href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">request</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<http::authentication::Principal></a>&);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Stops memory profiling and dumps collected data.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="classprocess_1_1Future.html">Future<http::Response></a> stop(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <spa
n class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>& request,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<http::authentication::Principal></a>&);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Returns a raw heap profile.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classprocess_1_1Future.html">Future<http::Response></a> downloadRawProfile(</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>& request,</div><div class="
line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<http::authentication::Principal></a>&);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Generates and returns a symbolized heap profile.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classprocess_1_1Future.html">Future<http::Response></a> downloadSymbolizedProfile(</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>& request,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">const</span> <a cla
ss="code" href="classOption.html">Option<http::authentication::Principal></a>&);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// Generates and returns a call graph in svg format.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classprocess_1_1Future.html">Future<http::Response></a> downloadGraphProfile(</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>& request,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<http::authentication::Principal></a>&);</div><div class="line"><a
name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Shows memory allocation statistics.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="classprocess_1_1Future.html">Future<http::Response></a> statistics(</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>& request,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<http::authentication::Principal></a>&);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> 
<span class="comment">// Shows the configuration of the memory-profiler process.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="classprocess_1_1Future.html">Future<http::Response></a> state(</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1http_1_1Request.html">http::Request</a>& request,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<http::authentication::Principal></a>&);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Internal functions, helper classes, and data members.</span></div><div class="line"><a name="l00095"></
a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Deactivates data collection and attempts to dump the raw profile to disk.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> stopAndGenerateRawProfile();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// The authentication realm that the profiler's HTTP endpoints will be</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// installed into.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classOption.html">Option<std::string></a> authenticationRealm;</div><div class="line"><a name
="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Stores information about the current profiling run.</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// When the timer reaches zero, a dump of the collected</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// data will be attempted.</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">class </span>ProfilingRun</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  ProfilingRun(<a class="code" href=
"classprocess_1_1MemoryProfiler.html">MemoryProfiler</a>*, time_t, <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">void</span> extend(<a class="code" href="classprocess_1_1MemoryProfiler.html">MemoryProfiler</a>*, <span class="keyword">const</span> <a class="code" href="classDuration.html">Duration</a>&);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  time_t <a class="code" href="namespaceid.html">id</a>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classprocess_1_1Timer.html">Timer</a> timer;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  };</div><div class="line"><a name="l00115"></a><span class=
"lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="classOption.html">Option<ProfilingRun></a> currentRun;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// Represents a file on the filesystem that is generated as the result</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// of running some action.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">class </span>DiskArtifact</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00123"></a><span
class="lineno"> 123</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<DiskArtifact></a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a>(</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">const</span> std::string& filename,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  time_t timestamp,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  std::function<<a class="code" href="classTry.html">Try<Nothing></a>(<span class="keyword">const</span> std::string& outputPath)> generator);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">const</span> time_t getId() <span class="keyword">const</span>;<
/div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  std::string getPath() <span class="keyword">const</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// Generates an error response if the file doesn't exist, or a download</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// if it does.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="structprocess_1_1http_1_1Response.html">http::Response</a> asHttp() <span class="keyword">const</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"
> 136</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  DiskArtifact(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>, time_t <span class="keywordtype">id</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  std::string path;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  time_t id;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  };</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// This profile is obtained by telling jemalloc to dump its stats to a file.</span></div><div class="line"><a name="l00144"
></a><span class="lineno"> 144</span>  <a class="code" href="classTry.html">Try<DiskArtifact></a> rawProfile = <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not yet generated"</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// These profiles are obtained by running `jeprof` on the `raw` profile.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classTry.html">Try<DiskArtifact></a> symbolizedProfile = <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Not yet generated"</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classTry.html">Try<DiskArtifact></a> graphProfile = <a class="code" href="classError.ht
ml">Error</a>(<span class="stringliteral">"Not yet generated"</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> } <span class="comment">// namespace process {</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#endif // __PROCESS_MEMORY_PROFILER_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="namespaceprocess_1_1http_html_ad8f400b5e54038df7e5662ec35da05fa"><div class="ttname"><a href="namespaceprocess_1_1http.html#ad8f400b5e54038df7e5662ec35da05fa">process::http::request</a></div><div class="ttdeci">Future< Response > request(const Request &request, bool streamedResponse=false)</div><div class="ttdoc">Asynchronously sends an HTTP request to the process and returns the HTTP response once the entire res...</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try< DiskArtifact ></a></div></div>
[15/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2tests_2module_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2tests_2module_8hpp_source.html b/content/api/latest/c++/src_2tests_2module_8hpp_source.html
index 5e51bcd..9784653 100644
--- a/content/api/latest/c++/src_2tests_2module_8hpp_source.html
+++ b/content/api/latest/c++/src_2tests_2module_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="src_2tests_2module_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></
a><span class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">/
/ distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __TESTS_MODULE_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __TESTS_MODULE_HPP__</span></div><div class="li
ne"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2module_2module_8hpp.html">mesos/module/module.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "
;<a class="code" href="src_2logging_2flags_8hpp.html">logging/flags.hpp</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="messages_8hpp.html">messages/messages.hpp</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="module_2manager_8hpp.html">module/manager.hpp</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="src_2tests_2mesos_8hpp.html">tests/mesos.hpp</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace
</span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span>tests {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// The ModuleID is used by typed tests to specify the specific module</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// name for the test instance. Ideally, we would have passed the</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// module name itself, but templates do not allow string literals as</spa
n></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// template parameters.</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6"> 40</a></span> <span class="keyword">enum</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6">ModuleID</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a487e012b40d4be9d7c364908f57d6475"> 42</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a487e012b40d4be9d7c364908f57d6475">TestMemIsolator</a>,</div><div class="line"><a name="l00043"></a><span class="lineno"><a cla
ss="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6ab3a6eff3990cec13e00c231350024fa7"> 43</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6ab3a6eff3990cec13e00c231350024fa7">TestCpuIsolator</a>,</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a19b9a07b5e9c0d4cca1c6c1c5489e1f8"> 44</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a19b9a07b5e9c0d4cca1c6c1c5489e1f8">TestCRAMMD5Authenticatee</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6af757c3fa652b90267bc077c04be59573"> 45</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a
6af757c3fa652b90267bc077c04be59573">TestCRAMMD5Authenticator</a>,</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a67732e5ddc082a60d81ae40d09b18a2d"> 46</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a67732e5ddc082a60d81ae40d09b18a2d">TestHook</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6ad9e216ee4ee3615cbe60d50cbf2043dc"> 47</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6ad9e216ee4ee3615cbe60d50cbf2043dc">TestAnonymous</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a1ec8fc934062f6aadd9019c7f1f1d2c0">
48</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a1ec8fc934062f6aadd9019c7f1f1d2c0">TestDRFAllocator</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a030b83d998cc2c24521d94334f004be8"> 49</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a030b83d998cc2c24521d94334f004be8">TestNoopResourceEstimator</a>,</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a28f16568928e717acf74bda1beedde3d"> 50</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a28f16568928e717acf74bda1beedde3d">TestLocalAuthorizer</a>,</div><div class="line"><a name="l00051"></a><span class="linen
o"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a51a2be7588526c37ea4dd4fb65ad78eb"> 51</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a51a2be7588526c37ea4dd4fb65ad78eb">TestSandboxContainerLogger</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6af38e1a65a784c9ef0165b5a59e9316d0"> 52</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6af38e1a65a784c9ef0165b5a59e9316d0">TestMasterContender</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6ade2ccab5fb95e9184585a13f329a9c95"> 53</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc
737b0f9b357191a6ade2ccab5fb95e9184585a13f329a9c95">TestMasterDetector</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a29cdd8cd657c6eceab1bd280cdb1ba0f"> 54</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a29cdd8cd657c6eceab1bd280cdb1ba0f">LogrotateContainerLogger</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a4aa899127ad1c4a99a34fe6856cda6a6"> 55</a></span>  <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a4aa899127ad1c4a99a34fe6856cda6a6">TestHttpBasicAuthenticator</a></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</s
pan> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a40599477fe582297ef92c8e19df830b1">initModules</a>(<span class="keyword">const</span> <a class="code" href="classOption.html">Option<Modules></a>& modules);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#ace5b81f8c8c934527d3540f32a4b52bb">getModuleName</a>(<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6">ModuleID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l
00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, ModuleID N></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1Module.html"> 65</a></span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1tests_1_1Module.html">Module</a></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Create is used by the type_param'ed tests. T here denotes the</span></div><div class="li
ne"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// module type, whereas N denotes the module name.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1Module.html#a6feec23c6307765d6d74118f26258e75"> 70</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<T*></a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1Module.html#a6feec23c6307765d6d74118f26258e75">create</a>()</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classTry.html">Try<std::string></a> moduleName = <a class="code" href="namespacemesos_1_1internal_1_1tests.html#ace5b81f8c8c934527d3540f32a4b52bb">getModuleName</a>(N);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#
160; <span class="keywordflow">if</span> (moduleName.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(moduleName.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">return</span> mesos::modules::ModuleManager::create<T>(moduleName.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span c
lass="lineno"> 79</span>  <span class="comment">// Create is used by the type_param'ed tests. T here denotes the</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// module type, whereas N denotes the module name.</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1Module.html#abae032ed084599d940352ce9b36afa74"> 81</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<T*></a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1Module.html#abae032ed084599d940352ce9b36afa74">create</a>(<span class="keyword">const</span> Parameters& parameters)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classTry.html">Try<std::string></a>
moduleName = <a class="code" href="namespacemesos_1_1internal_1_1tests.html#ace5b81f8c8c934527d3540f32a4b52bb">getModuleName</a>(N);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (moduleName.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(moduleName.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> mesos::modules::ModuleManager::create<T>(</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  moduleName.
<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  parameters);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1tests_1_1Module.html#a81386a14653ded5161d87b4e54c3e0a3"> 92</a></span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<T*></a> <a class="code" href="classmesos_1_1internal_1_1tests_1_1Module.html#a81386a14653ded5161d87b4e54c3e0a3">create</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1logging_1_1Flags.html">logging::Flags</a>& <a class="code" href="namespaceflags.html">flags</a>)</div><div class="line"><a name="l00093"></a><span class="
lineno"> 93</span>  {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classmesos_1_1internal_1_1tests_1_1Module.html#a6feec23c6307765d6d74118f26258e75">create</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> };</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> } <span class="comment">// namespace tests {</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00101"></a><span class="
lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html"> 105</a></span> <span class="keyword">struct </span>hash<<a class="code" href="namespacemesos.html">mesos</a>::<a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6">internal::tests::ModuleID</a>></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="
structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html#ae1f06800f834cda908849248a16eecc7"> 107</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">size_t</span> <a class="code" href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html#ae1f06800f834cda908849248a16eecc7">result_type</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html#aeedaa1e38800ab6aeae4cda6451cf477"> 109</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6">mesos::internal::tests::ModuleID</a> <a class="code" href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html#aeedaa1e38800ab6aeae4cda6451cf477">argument_type</a>;</div><div class="line"><a
name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html#a25ba0a9dfc90816ea144009218feebbc"> 111</a></span>  result_type <a class="code" href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html#a25ba0a9dfc90816ea144009218feebbc">operator()</a>(<span class="keyword">const</span> argument_type& moduleId)<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Use the underlying type of the enum as hash value.</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span clas
s="keywordtype">size_t</span><span class="keyword">></span>(moduleId);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> };</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> } <span class="comment">// namespace std {</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#endif // __TESTS_MODULE_HPP__</span></div><div class="ttc" id="classmesos_1_1internal_1_1tests_1_1Module_html_abae032ed084599d940352ce9b36afa74"><div class="ttname"><a href="classmesos_1_1internal_1_1tests_1_1Module.html#abae032ed084599d940352ce9b36afa74">mesos::internal::tests::Module::create</a></div><div class="ttdeci">static Try<
T * > create(const Parameters &parameters)</div><div class="ttdef"><b>Definition:</b> module.hpp:81</div></div>
<div class="ttc" id="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4_html_a25ba0a9dfc90816ea144009218feebbc"><div class="ttname"><a href="structstd_1_1hash_3_01mesos_1_1internal_1_1tests_1_1ModuleID_01_4.html#a25ba0a9dfc90816ea144009218feebbc">std::hash< mesos::internal::tests::ModuleID >::operator()</a></div><div class="ttdeci">result_type operator()(const argument_type &moduleId) const </div><div class="ttdef"><b>Definition:</b> module.hpp:111</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Modules ></a></div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1tests_html_a40599477fe582297ef92c8e19df830b1"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a40599477fe582297ef92c8e19df830b1">mesos::internal::tests::initModules</a></div><div class="ttdeci">Try< Nothing > initModules(const Option< Modules > &modules)</div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1tests_html_a61dcd7752a1b2bfc737b0f9b357191a6a030b83d998cc2c24521d94334f004be8"><div class="ttname"><a href="namespacemesos_1_1internal_1_1tests.html#a61dcd7752a1b2bfc737b0f9b357191a6a030b83d998cc2c24521d94334f004be8">mesos::internal::tests::TestNoopResourceEstimator</a></div><div class="ttdef"><b>Definition:</b> module.hpp:49</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/src_2v1_2parse_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2v1_2parse_8hpp_source.html b/content/api/latest/c++/src_2v1_2parse_8hpp_source.html
index 39b4526..7390185 100644
--- a/content/api/latest/c++/src_2v1_2parse_8hpp_source.html
+++ b/content/api/latest/c++/src_2v1_2parse_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">parse.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="src_2v1_2parse_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">/
/</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cla
ss="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __V1_PARSE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __V1_PARSE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2protobuf_8hpp.html">stout/protobuf.hpp</a>></span></div><div class="line"><a
name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">stout/flags/parse.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2v1_2mesos_8hpp.html">mesos/v1/mesos.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">namespace </span><a cl
ass="code" href="namespaceflags.html">flags</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespaceflags.html#a6db9228a4cf292f0a1778b5924266217"> 28</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::CapabilityInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1
b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::CapabilityInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line">
<a name="l00036"></a><span class="lineno"> 36</span> }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceflags.html#af35c1748be7af9ae6246879272540460"> 40</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::RLimitInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="classTry.html">Try<JSO
N::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::RLimitInfo>(json.<a class="code" hr
ef="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespaceflags.html#a51c6e1e677dffb870a44c63fc5b736e1"> 52</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::TaskGroupInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"><
/a><span class="lineno"> 54</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="
l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::TaskGroupInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespaceflags.html#ace2be9b6ba81d629b5873b6f178baa3d"> 66</a></
span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::TaskInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>
()) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::TaskInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno">
77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> } <span class="comment">// namespace flags {</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#endif // __V1_PARSE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="src_2v1_2parse_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">/
/</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div cla
ss="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __V1_PARSE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __V1_PARSE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <<a class="code" href="json_8hpp.html">stout/json.hpp</a>></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2protobuf_8hpp.html">stout/protobuf.hpp</a>></span></div><div class="line"><a
name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">stout/flags/parse.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="include_2mesos_2v1_2mesos_8hpp.html">mesos/v1/mesos.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">namespace </span><a cl
ass="code" href="namespaceflags.html">flags</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespaceflags.html#a6db9228a4cf292f0a1778b5924266217"> 28</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::CapabilityInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1
b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::CapabilityInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line">
<a name="l00036"></a><span class="lineno"> 36</span> }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceflags.html#af35c1748be7af9ae6246879272540460"> 40</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::RLimitInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="classTry.html">Try<JSO
N::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::RLimitInfo>(json.<a class="code" hr
ef="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespaceflags.html#a51c6e1e677dffb870a44c63fc5b736e1"> 52</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::TaskGroupInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"><
/a><span class="lineno"> 54</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="
l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::TaskGroupInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespaceflags.html#ace2be9b6ba81d629b5873b6f178baa3d"> 66</a></
span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<mesos::v1::TaskInfo></a> <a class="code" href="namespaceflags.html#af30eac14fca1a6fd93863545a0666e0c">parse</a>(<span class="keyword">const</span> std::string& value)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Convert from string or file to JSON.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classTry.html">Try<JSON::Object></a> <a class="code" href="namespacemesos_1_1internal.html#a3752d85ef726065c6c1b946eef1ba87a">json</a> = parse<JSON::Object>(value);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span> (json.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>
()) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(json.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Convert from JSON to Protobuf.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> protobuf::parse<mesos::v1::TaskInfo>(json.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno">
77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> } <span class="comment">// namespace flags {</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#endif // __V1_PARSE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2flags_2parse_8hpp.html">parse.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/state__machine_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/state__machine_8hpp_source.html b/content/api/latest/c++/state__machine_8hpp_source.html
index aa524be..b065013 100644
--- a/content/api/latest/c++/state__machine_8hpp_source.html
+++ b/content/api/latest/c++/state__machine_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="state__machine_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment
">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div c
lass="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __PROCESS_STATE_MACHINE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __PROCESS_STATE_MACHINE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="future_8hpp.html">process/future.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor
">#include <<a class="code" href="hashmap_8hpp.html">stout/hashmap.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="result__of_8hpp.html">stout/result_of.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="traits_8hpp.html">stout/traits.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a
><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespaceprocess.html">process</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// An asbtraction to help build state machines within an actor.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">//</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Actors are natural state machines but there is still quite a bit of</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// boilerplate that one needs to end up writing. For example, let's</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// say you h
ave the following actor:</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// class CoinOperatedTurnstile : public Process<CoinOperatedTurnstile></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// {</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// public:</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// // Returns nothing if you've been able to deposit a coin.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Future<Nothing> deposit()</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> 
<span class="comment">// {</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// if (state != State::LOCKED) {</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// return Failure("Coin already deposited in turnstile");</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// }</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// state = State::UNLOCKED;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">//</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// ... per
form any side effects related to depositing a coin ...;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// return Nothing();</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// }</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">//</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// // Returns nothing if you've been able to push through the turnstile.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// Future<Nothing> push()</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment
">// {</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// if (state != State::UNLOCKED) {</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// return Failure("Turnstile is locked");</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// }</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">//</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// state = State::LOCKED;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">//</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// ... perform any side effects from opening t
he turnstile ...;</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">//</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// return Nothing();</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// }</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">//</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// private:</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// enum class State {</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// UNLOCKED,</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <spa
n class="comment">// LOCKED,</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// } state = State::LOCKED;</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// };</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// With the `StateMachine` abstraction below this becomes:</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">//</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// class CoinOperatedTurnstile : public Process<CoinOperatedTurnstile></span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="com
ment">// {</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// public:</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// // Returns nothing if you've been able to deposit a coin.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// Future<Nothing> deposit()</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// {</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// return state.transition<State::LOCKED, State::UNLOCKED>(</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// []() -> Future<Nothing> {</span></div><div class="line"><a name="l00082"></a><span class="
lineno"> 82</span> <span class="comment">// ... perform any side effects related to depositing a coin ...;</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// },</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// "Coin already deposited in turnstile");</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// }</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">//</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// // Returns nothing if you've been able to push through the turnstile.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Future<Nothing> push
()</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// {</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// return state.transition<State::UNLOCKED, State::LOCKED>(</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// []() -> Future<Nothing> {</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// ... perform any side effects from opening the turnstile ...;</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// },</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// "Turnstile is locked");</span></div><div class="line"><a name="l00095"></a><span class
="lineno"> 95</span> <span class="comment">// }</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">//</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// private:</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// enum class State {</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// UNLOCKED,</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// LOCKED,</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// };</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">//</span></div><div class="line"><a name="l00103"></a><span class
="lineno"> 103</span> <span class="comment">// StateMachine<State> state = State::LOCKED;</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// };</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">//</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">//</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// *** Transition Semantics ***</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">//</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// The semantics of `StateMachine::transition()` are:</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">//<
/span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// (1) Transition the state if the state is currently in the</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// specified "from" state. If not, return an `Error()`.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">//</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// (2) Notify anyone waiting on that state transition (i.e., anyone</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// that called `StateMachine::when()`).</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">//</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 11
7</span> <span class="comment">// (3) Invoke the side effect function (if provided).</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">//</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">//</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// *** Asynchronous Transitions ***</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">//</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// In many circumstances you'll need to perform some work, often</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// asynchronously, in order to transition to a particular state. For</span></div><div class="line"><a name="l00124"></
a><span class="lineno"> 124</span> <span class="comment">// example, consider some actor that needs to perform some asynchronous</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// action in order to transition from a "running" state to a</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// "stopped" state. To do that you'll need to introduce an</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// intermediate state and _only_ complete the transition after the</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment">// asynchronous action has completed. For example:</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">//</span></div><div class="line"><a name
="l00130"></a><span class="lineno"> 130</span> <span class="comment">// // Returns nothing once we have stopped.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// Future<Nothing> stop()</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// {</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="comment">// return state.transition<State::RUNNING, State::STOPPING>(</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// []() {</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// return asynchronously_stop()</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// .then([]() ->
Future<Nothing> {</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// return state.transition<State::STOPPING, State::STOPPED>();</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// });</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// });</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// }</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment">//</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// It can be tempting to skip this pattern even when you're not</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="com
ment">// calling any asynchronous function, but be careful because you</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment">// shouldn't be peforming ANY action to perform a transition without</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// first changing the state to reflect the fact that you're doing the</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// transition.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">//</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// The rule of thumb is this: if you need to perform _ANY_ action</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// (synchronous or asyn
chronous) to transition to a state you _MUST_</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// introduce an intermediate state to represent that you're performing</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// that transition.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword">template</span> <<span class="keyword">typename</span> State></div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classprocess_1_1StateMachine.html"> 153</a></span> <span class="keyword">class </span><a class="code" href="classprocess_1_1StateMachine.html">StateMachine</a></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">public</s
pan>:</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classprocess_1_1StateMachine.html#ae57900c329ba1669ccfb98c1a0160652"> 156</a></span>  <a class="code" href="classprocess_1_1StateMachine.html#ae57900c329ba1669ccfb98c1a0160652">StateMachine</a>(State initial) : state(initial) {}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">template</span> <State from, State to, <span class="keyword">typename</span> F></div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classprocess_1_1StateMachine.html#a3883dcf637739427e7c83d5654f57891"> 159</a></span>  <a class="code" href="classTry.html">Try<typename result_of<F()>::type</a>> <a class="code" href="classprocess_1_1StateMachine.html#a3883dcf637739427e7c83d5654f57891">transition</a>(</div><div class=
"line"><a name="l00160"></a><span class="lineno"> 160</span>  F&& <a class="code" href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">f</a>,</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classOption.html">Option<std::string></a>&& message = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (state != from) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(message.getOrElse(<span class="stringliteral">"Invalid current state"</span>));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  }</div><div c
lass="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  state = to;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">foreach</span> (<a class="code" href="classprocess_1_1Promise.html">Promise<Nothing></a>& <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a3b1f8bd7b18c51af9d1f58842950b545">promise</a>, promises[state]) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  promise.<a class="code" href="classprocess_1_1Promise.html#a989b8dfa7eb2633de3f0f25ac2b87943">set</a>(<a class="code" href="structNothing.html">Nothing</a>());</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span
class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  promises[state].clear();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">f</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">template</span> <State from, State to></div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classprocess_1_1StateMachine.html#af65a130b5433ad199e3cfc742da6bce8"> 179</a></span>  <a class="code" href="classTry.html">Try<Nothi
ng></a> <a class="code" href="classprocess_1_1StateMachine.html#af65a130b5433ad199e3cfc742da6bce8">transition</a>(<a class="code" href="classOption.html">Option<std::string></a>&& message = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> transition<from, to>([]() { <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>(); }, std::move(message));</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">template</span> <State s></div><div class="line"><a name="l00185"></a><span class="lin
eno"><a class="line" href="classprocess_1_1StateMachine.html#a6f0830360e0999fdb3803b31dbd016ea"> 185</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classprocess_1_1StateMachine.html#a6f0830360e0999fdb3803b31dbd016ea">is</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> state == s;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">template</span> <State s></div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classprocess_1_1StateMachine.html#ab5ecde2413bc4dc62
d5b47584940d1ca"> 191</a></span>  <a class="code" href="classprocess_1_1Future.html">Future<Nothing></a> <a class="code" href="classprocess_1_1StateMachine.html#ab5ecde2413bc4dc62d5b47584940d1ca">when</a>()</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span> (state != s) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  promises[s].emplace_back();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">return</span> promises[s].back().future();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyw
ordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  State state;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classhashmap.html">hashmap<State, std::vector<Promise<Nothing></a>>> promises;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> };</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 20
7</span> } <span class="comment">// namespace process {</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#endif // __PROCESS_STATE_MACHINE_HPP__</span></div><div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="namespaceprocess_html_a62d5333e8ec1817c249cf83e15d568b4"><div class="ttname"><a href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">process::f</a></div><div class="ttdeci">F && f</div><div class="ttdef"><b>Definition:</b> defer.hpp:270</div></div>
<div class="ttc" id="classprocess_1_1Promise_html_a989b8dfa7eb2633de3f0f25ac2b87943"><div class="ttname"><a href="classprocess_1_1Promise.html#a989b8dfa7eb2633de3f0f25ac2b87943">process::Promise::set</a></div><div class="ttdeci">bool set(const T &_t)</div><div class="ttdef"><b>Definition:</b> future.hpp:827</div></div>
[32/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/link_2internal_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/link_2internal_8hpp_source.html b/content/api/latest/c++/link_2internal_8hpp_source.html
index 783f03e..1a49c80 100644
--- a/content/api/latest/c++/link_2internal_8hpp_source.html
+++ b/content/api/latest/c++/link_2internal_8hpp_source.html
@@ -54,13 +54,13 @@
<div class="contents">
<a href="link_2internal_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><s
pan class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// di
stributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __LINUX_ROUTING_LINK_INTERNAL_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __LINUX_ROUTING_LINK_INTERNAL_HPP__<
/span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sys/ioctl.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <sys/socket.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <linux/if.h></span> <span class="co
mment">// Must be included after sys/socket.h.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <netlink/cache.h></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <netlink/errno.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <netlink/socket.h></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <netlink/route/link.h></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <s
pan class="preprocessor">#include <string></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="os_8hpp.html">stout/os.hpp</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span cl
ass="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include "<a class="code" href="internal_8hpp.html">linux/routing/internal.hpp</a>"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">namespace </span><a class="code" href="namespacerouting.html">routing</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespacerouting.html#a9f14dd8971b2d42
b0acf423a5f5746b2"> 47</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerouting.html#a728e253aba8e42f601752ddc771e9902">cleanup</a>(<span class="keyword">struct</span> rtnl_link* link)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  rtnl_link_put(link);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespacerouting_1_1link.html"> 52</a></span> <span class="keyword">namespace </span>link {</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespacerouting_1_1link_1_1internal.html"> 53</a></span> <span class="keyword">namespace </span><
a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// Returns the netlink link object associated with a given link by its</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// name. Returns None if the link is not found.</span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="namespacerouting_1_1link_1_1internal.html#a01998838b3ff4f3123f42927f7f54738"> 57</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> <span class="keyword">get</span>(<span class="keyword">const</span> std::string& link)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"
><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">socket</a> = <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing::socket</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (socket.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(socket.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </d
iv><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Dump all the netlink link objects from kernel. Note that the flag</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment">// AF_UNSPEC means all available families.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">struct </span>nl_cache* c = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_link_alloc_cache(socket-><a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), AF_UNSPEC, &c);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywor
dflow">if</span> (error != 0) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(nl_geterror(error));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct nl_cache></a> cache(c);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">struct </span>rtnl_link* l = rtnl_link_get_by_name(cache.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), link.c_str());</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (l == <span class=
"keyword">nullptr</span>) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>(l);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Returns the netlink link object associated
with a given link by its</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// interface index. Returns None if the link is not found.</span></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespacerouting_1_1link_1_1internal.html#acc05997c299385774dd15729e3b2c147"> 84</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> <span class="keyword">get</span>(<span class="keywordtype">int</span> <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classTry.html">Try<Netlink<struct nl_sock></a>> <a class="code" href="namespacerouting.html#aee51d4e36a57bab7
d6ada56e15467370">socket</a> = <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">routing::socket</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (socket.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(socket.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Dump all the netlink link objects from kernel. Note that the flag</span></div><div class="line"><a
name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// AF_UNSPEC means all available families.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">struct </span>nl_cache* c = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = rtnl_link_alloc_cache(socket-><a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>(), AF_UNSPEC, &c);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a
>(nl_geterror(error));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct nl_cache></a> cache(c);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">struct </span>rtnl_link* l = rtnl_link_get(cache.<a class="code" href="classrouting_1_1Netlink.html#aed276efbe5490b33b471783504b5f89e">get</a>(), <a class="code" href="namespacerouting_1_1link.html#a26486cdba01ef1c80706b1e07e8a6d3f">index</a>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (l == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="ke
ywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <a class="code" href="classrouting_1_1Netlink.html">Netlink<struct rtnl_link></a>(l);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// Tests if the flags are set on the link. Returns None if the link is</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="c
omment">// not found.</span></div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespacerouting_1_1link_1_1internal.html#a7a252b06125fcedef9ce27135306d05d"> 111</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<bool></a> <a class="code" href="namespacerouting_1_1link_1_1internal.html#a7a252b06125fcedef9ce27135306d05d">test</a>(<span class="keyword">const</span> std::string& _link, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceflags.html">flags</a>)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link = <span class="keyword">get</span>(_link);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</spa
n>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno
"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> flags == (rtnl_link_get_flags(link-><a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()) & flags);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// Sets the flags on the link. Returns false if the link is not found.</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="namespacerouting_1_1link_1_1internal.html#abfdfc99e016fe858117fa1767cef2be0"> 125</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<bool></a
> <span class="keyword">set</span>(<span class="keyword">const</span> std::string& _link, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classResult.html">Result<Netlink<struct rtnl_link></a>> link = <span class="keyword">get</span>(_link);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(link.<a class="code" href="classResu
lt.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (link.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// TODO(jieyu): We use ioctl to set the flags because the interfaces</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// in libnl have some issues with virtual devices.</span></
div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">struct </span>ifreq ifr;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  memset(&ifr, 0, <span class="keyword">sizeof</span>(ifr));</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// Get the existing flags and take a bit-wise OR.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  ifr.ifr_flags = (rtnl_link_get_flags(link-><a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>()) | <a class="code" href="namespaceflags.html">flags</a>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  strncpy(ifr.ifr_name, _link.
c_str(), IFNAMSIZ);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">int</span> fd = <a class="code" href="namespacerouting.html#aee51d4e36a57bab7d6ada56e15467370">::socket</a>(AF_INET, SOCK_STREAM, 0);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span> (fd == -1) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span> (ioctl(fd, SIOCSIFFLAGS, &ifr
) == -1) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span> (errno == ENODEV) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Save the error string as os::close may overwrite errno.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">const</span> std::string message = <a class="code" href="namespaceos.html#aa9ac
22b4028f187826a9861373006abf">os::strerror</a>(errno);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(message);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="namespaceos.html#a8df77ec6d6b8d32d9b287a41bc74cfdc">os::close</a>(fd);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">return</span> <span cla
ss="keyword">true</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> } <span class="comment">// namespace link {</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> } <span class="comment">// namespace routing {</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#endif // __LINUX_ROUTING_LINK_INTERNAL_HPP__</span></div><div class="ttc" id="namespaceos_html_aa9ac22b4028f187826a9861373006abf"><div class="ttname"><a href="namespaceos.html#aa9ac22b4028f187826a98
61373006abf">os::strerror</a></div><div class="ttdeci">std::string strerror(int errno_)</div><div class="ttdoc">A thread-safe version of strerror. </div><div class="ttdef"><b>Definition:</b> strerror.hpp:30</div></div>
<div class="ttc" id="classResult_html_ac2cdc0db9f9d29a5bb2f1cf19c29da49"><div class="ttname"><a href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">Result::isNone</a></div><div class="ttdeci">bool isNone() const </div><div class="ttdef"><b>Definition:</b> result.hpp:112</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="classResult_html_a521adf96f5c27d26d6b1d580aae8aaee"><div class="ttname"><a href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">Result::error</a></div><div class="ttdeci">static Result< T > error(const std::string &message)</div><div class="ttdef"><b>Definition:</b> result.hpp:53</div></div>
<div class="ttc" id="os_8hpp_html"><div class="ttname"><a href="os_8hpp.html">os.hpp</a></div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="internal_8hpp_html"><div class="ttname"><a href="internal_8hpp.html">internal.hpp</a></div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/logrotate_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/logrotate_8hpp_source.html b/content/api/latest/c++/logrotate_8hpp_source.html
index 6a6c37d..8d1ead0 100644
--- a/content/api/latest/c++/logrotate_8hpp_source.html
+++ b/content/api/latest/c++/logrotate_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">logrotate.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="logrotate_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span c
lass="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distrib
uted under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __SLAVE_CONTAINER_LOGGER_LOGROTATE_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __SLAVE_CONTAINER_LOGGER_LOGROTATE_H
PP__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3
rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2constants_8hpp.html">stout/os/constants.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div
><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span>logger {</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html"> 36</a></span> <span class="keyword">namespace </span>rotate {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><spa
n class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854"> 38</a></span> <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854">NAME</a> = <span class="stringliteral">"mesos-logrotate-logger"</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#a2ff732e40c6b4f02a02444462d5fc484"> 39</a></span> <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#a2ff732e40c6b4f02a02444462d5fc484">CONF_SUFFIX</a> = <span class="stringliteral">".logrotate.conf"</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#abf20cb8a71a943cda225a99bb81c26ed">
40</a></span> <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#abf20cb8a71a943cda225a99bb81c26ed">STATE_SUFFIX</a> = <span class="stringliteral">".logrotate.state"</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html"> 42</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html">Flags</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1ro
tate_1_1Flags.html#a908c2b7c0f5b04a8fb5b70f7833ba634"> 44</a></span>  <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a908c2b7c0f5b04a8fb5b70f7833ba634">Flags</a>()</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classflags_1_1FlagsBase.html#ac99b7ca8863b671274472f571de0060a">setUsageMessage</a>(</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="stringliteral">"Usage: "</span> + NAME + <span class="stringliteral">" [options]\n"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="stringliteral">"This command pipes from STDIN to the
given leading log file.\n"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="stringliteral">"When the leading log file reaches '--max_size', the command.\n"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="stringliteral">"uses 'logrotate' to rotate the logs. All 'logrotate' options\n"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="stringliteral">"are supported. See '--logrotate_options'.\n"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classflags_
1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a9af79512a17ccbec175568aa7c6574ea">Flags::max_size</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="stringliteral">"max_size"</span>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="stringliteral">"Maximum size, in bytes, of a single log file.\n"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="stringliteral">"Defaults to 10 MB. Must be at least 1 (memory) page."</span>,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="bytes_8hpp.html#a5d8fe3ccbf9cafff06846c05b3ca864b">Megabytes</a>(10),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
[](<span class="keyword">const</span> <a class="code" href="classBytes.html">Bytes</a>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (value.<a class="code" href="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c">bytes</a>() < <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>()) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="stringliteral">"Expected --max_size of at least "</span> +</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="namespacens
.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>()) + <span class="stringliteral">" bytes"</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  });</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#ad8a1d00415b5c49cef8b620230a18c0a">Flags::logrotate_options</a>,</
div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="stringliteral">"logrotate_options"</span>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="stringliteral">"Additional config options to pass into 'logrotate'.\n"</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="stringliteral">"This string will be inserted into a 'logrotate' configuration file.\n"</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="stringliteral">"i.e.\n"</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="stringliteral">" /path/to/<log_filename> {\n"</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="st
ringliteral">" <logrotate_options>\n"</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="stringliteral">" size <max_size>\n"</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="stringliteral">" }\n"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">"NOTE: The 'size' option will be overridden by this command."</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#aa813ed8c26be59608ca5667c0c267f8b">Flags::log_filename</a>,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="stringliteral">"log_filename"</span>,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="stringliteral">"Absolute path to the leading log file.\n"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="stringliteral">"NOTE: This command will also create two files by appending\n"</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="stringliteral">"'"</span> + CONF_SUFFIX + <span class="stringliteral">"' and '"</span> + STATE_SUFFIX + <span class="stringliteral">"' to the end of\n"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="stringliteral">"'--log_filename'. These files
are used by 'logrotate'."</span>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  [](<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (value.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Missing required option --log_filename"</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</s
pan> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacepath.html#a09c4941618b3a4ea2dbfccf5fe9d3687">path::absolute</a>(value.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>())) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Expected --log_filename to be an absolute path"</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line">
<a name="l00096"></a><span class="lineno"> 96</span>  });</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a3e7f68e6e1128e2fb2fa4a84c58aa249">Flags::logrotate_path</a>,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="stringliteral">"logrotate_path"</span>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="stringliteral">"If specified, this command will use the specified\n"</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="stringliteral">"'logrotate' instead of the system
9;s 'logrotate'."</span>,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="stringliteral">"logrotate"</span>,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  [](<span class="keyword">const</span> std::string& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// Check if `logrotate` exists via the help command.</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// TODO(josephw): Consider a more comprehensive check.</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classTry.html">Try<std::string></a> helpCommand =</div><div class="line"><a name="l00107"></a><span class="line
no"> 107</span>  <a class="code" href="namespaceos.html#a0d86320d7799ea761599bc356c02a4fa">os::shell</a>(value + <span class="stringliteral">" --help > "</span> + <a class="code" href="namespaceos.html#a8d90278daa51c4fe9fcb9e54757187b5">os::DEV_NULL</a>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (helpCommand.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="stringliteral">"Failed to check logrotate: "</span> + helpCommand.<a class="code" href="cl
assTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  });</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a497482526f73fe8ee8249c28d49fd22f">Flags::user</a>,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span
>  <span class="stringliteral">"user"</span>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="stringliteral">"The user this command should run as."</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a9af79512a17ccbec175568aa7c6574ea"> 122</a></span>  <a class="code" href="classBytes.html">Bytes</a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a9af79512a17ccbec175568aa7c6574ea">max_size</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#ad8a1d00415b5c49cef8b620230a18c0a"> 123</a></span>
60; <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#ad8a1d00415b5c49cef8b620230a18c0a">logrotate_options</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#aa813ed8c26be59608ca5667c0c267f8b"> 124</a></span>  <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#aa813ed8c26be59608ca5667c0c267f8b">log_filename</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a3e7f68e6e1128e2fb2fa4a84c58aa249"> 125</a></span>  std::string <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a3e7f68e6e1128e2fb2fa4a84c58aa249">logrotate_path</a>;</div><div class="line"><a
name="l00126"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a497482526f73fe8ee8249c28d49fd22f"> 126</a></span>  <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a497482526f73fe8ee8249c28d49fd22f">user</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> } <span class="comment">// namespace rotate {</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> } <span class="comment">// namespace logger {</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00132"></a>
<span class="lineno"> 132</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#endif // __SLAVE_CONTAINER_LOGGER_LOGROTATE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="logrotate_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><span c
lass="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// distrib
uted under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __SLAVE_CONTAINER_LOGGER_LOGROTATE_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __SLAVE_CONTAINER_LOGGER_LOGROTATE_H
PP__</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="bytes_8hpp.html">stout/bytes.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="3
rdparty_2stout_2include_2stout_2flags_8hpp.html">stout/flags.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2os_2constants_8hpp.html">stout/os/constants.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div
><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespacemesos.html">mesos</a> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span>logger {</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html"> 36</a></span> <span class="keyword">namespace </span>rotate {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><spa
n class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854"> 38</a></span> <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#aee5dc359a1b6d22c5d912b166c895854">NAME</a> = <span class="stringliteral">"mesos-logrotate-logger"</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#a2ff732e40c6b4f02a02444462d5fc484"> 39</a></span> <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#a2ff732e40c6b4f02a02444462d5fc484">CONF_SUFFIX</a> = <span class="stringliteral">".logrotate.conf"</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#abf20cb8a71a943cda225a99bb81c26ed">
40</a></span> <span class="keyword">const</span> std::string <a class="code" href="namespacemesos_1_1internal_1_1logger_1_1rotate.html#abf20cb8a71a943cda225a99bb81c26ed">STATE_SUFFIX</a> = <span class="stringliteral">".logrotate.state"</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html"> 42</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html">Flags</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="classflags_1_1FlagsBase.html">flags::FlagsBase</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1ro
tate_1_1Flags.html#a908c2b7c0f5b04a8fb5b70f7833ba634"> 44</a></span>  <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a908c2b7c0f5b04a8fb5b70f7833ba634">Flags</a>()</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classflags_1_1FlagsBase.html#ac99b7ca8863b671274472f571de0060a">setUsageMessage</a>(</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="stringliteral">"Usage: "</span> + NAME + <span class="stringliteral">" [options]\n"</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="stringliteral">"\n"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="stringliteral">"This command pipes from STDIN to the
given leading log file.\n"</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="stringliteral">"When the leading log file reaches '--max_size', the command.\n"</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="stringliteral">"uses 'logrotate' to rotate the logs. All 'logrotate' options\n"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="stringliteral">"are supported. See '--logrotate_options'.\n"</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classflags_
1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a9af79512a17ccbec175568aa7c6574ea">Flags::max_size</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="stringliteral">"max_size"</span>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="stringliteral">"Maximum size, in bytes, of a single log file.\n"</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="stringliteral">"Defaults to 10 MB. Must be at least 1 (memory) page."</span>,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="bytes_8hpp.html#a5d8fe3ccbf9cafff06846c05b3ca864b">Megabytes</a>(10),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
[](<span class="keyword">const</span> <a class="code" href="classBytes.html">Bytes</a>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (value.<a class="code" href="classBytes.html#a1a2e9277ebe7d227a21f111898c49a8c">bytes</a>() < <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>()) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="stringliteral">"Expected --max_size of at least "</span> +</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="namespacens
.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>()) + <span class="stringliteral">" bytes"</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  });</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#ad8a1d00415b5c49cef8b620230a18c0a">Flags::logrotate_options</a>,</
div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="stringliteral">"logrotate_options"</span>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="stringliteral">"Additional config options to pass into 'logrotate'.\n"</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="stringliteral">"This string will be inserted into a 'logrotate' configuration file.\n"</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="stringliteral">"i.e.\n"</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="stringliteral">" /path/to/<log_filename> {\n"</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="st
ringliteral">" <logrotate_options>\n"</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="stringliteral">" size <max_size>\n"</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="stringliteral">" }\n"</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">"NOTE: The 'size' option will be overridden by this command."</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#aa813ed8c26be59608ca5667c0c267f8b">Flags::log_filename</a>,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="stringliteral">"log_filename"</span>,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="stringliteral">"Absolute path to the leading log file.\n"</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="stringliteral">"NOTE: This command will also create two files by appending\n"</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="stringliteral">"'"</span> + CONF_SUFFIX + <span class="stringliteral">"' and '"</span> + STATE_SUFFIX + <span class="stringliteral">"' to the end of\n"</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="stringliteral">"'--log_filename'. These files
are used by 'logrotate'."</span>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  [](<span class="keyword">const</span> <a class="code" href="classOption.html">Option<std::string></a>& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (value.<a class="code" href="classOption.html#a06eab791122ebc1f8af4ad310e5e7d7e">isNone</a>()) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Missing required option --log_filename"</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</s
pan> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacepath.html#a09c4941618b3a4ea2dbfccf5fe9d3687">path::absolute</a>(value.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>())) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Expected --log_filename to be an absolute path"</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line">
<a name="l00096"></a><span class="lineno"> 96</span>  });</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a3e7f68e6e1128e2fb2fa4a84c58aa249">Flags::logrotate_path</a>,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="stringliteral">"logrotate_path"</span>,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="stringliteral">"If specified, this command will use the specified\n"</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="stringliteral">"'logrotate' instead of the system
9;s 'logrotate'."</span>,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="stringliteral">"logrotate"</span>,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  [](<span class="keyword">const</span> std::string& value) -> <a class="code" href="classOption.html">Option<Error></a> {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// Check if `logrotate` exists via the help command.</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// TODO(josephw): Consider a more comprehensive check.</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classTry.html">Try<std::string></a> helpCommand =</div><div class="line"><a name="l00107"></a><span class="line
no"> 107</span>  <a class="code" href="namespaceos.html#a0d86320d7799ea761599bc356c02a4fa">os::shell</a>(value + <span class="stringliteral">" --help > "</span> + <a class="code" href="namespaceos.html#a8d90278daa51c4fe9fcb9e54757187b5">os::DEV_NULL</a>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (helpCommand.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="stringliteral">"Failed to check logrotate: "</span> + helpCommand.<a class="code" href="cl
assTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  });</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classflags_1_1FlagsBase.html#a09ebe840242a3b0fbd3263bb6c7ca226">add</a>(&<a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a497482526f73fe8ee8249c28d49fd22f">Flags::user</a>,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span
>  <span class="stringliteral">"user"</span>,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="stringliteral">"The user this command should run as."</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a9af79512a17ccbec175568aa7c6574ea"> 122</a></span>  <a class="code" href="classBytes.html">Bytes</a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a9af79512a17ccbec175568aa7c6574ea">max_size</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#ad8a1d00415b5c49cef8b620230a18c0a"> 123</a></span>
60; <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#ad8a1d00415b5c49cef8b620230a18c0a">logrotate_options</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#aa813ed8c26be59608ca5667c0c267f8b"> 124</a></span>  <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#aa813ed8c26be59608ca5667c0c267f8b">log_filename</a>;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a3e7f68e6e1128e2fb2fa4a84c58aa249"> 125</a></span>  std::string <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a3e7f68e6e1128e2fb2fa4a84c58aa249">logrotate_path</a>;</div><div class="line"><a
name="l00126"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a497482526f73fe8ee8249c28d49fd22f"> 126</a></span>  <a class="code" href="classOption.html">Option<std::string></a> <a class="code" href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html#a497482526f73fe8ee8249c28d49fd22f">user</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> } <span class="comment">// namespace rotate {</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> } <span class="comment">// namespace logger {</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00132"></a>
<span class="lineno"> 132</span> } <span class="comment">// namespace mesos {</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#endif // __SLAVE_CONTAINER_LOGGER_LOGROTATE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< Error ></a></div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags_html"><div class="ttname"><a href="structmesos_1_1internal_1_1logger_1_1rotate_1_1Flags.html">mesos::internal::logger::rotate::Flags</a></div><div class="ttdef"><b>Definition:</b> logrotate.hpp:42</div></div>
[25/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2ls_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2ls_8hpp_source.html b/content/api/latest/c++/posix_2ls_8hpp_source.html
index cd2ba77..04529a6 100644
--- a/content/api/latest/c++/posix_2ls_8hpp_source.html
+++ b/content/api/latest/c++/posix_2ls_8hpp_source.html
@@ -52,9 +52,9 @@
<div class="title">ls.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="posix_2ls_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</sp
an></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="l
ine"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_LS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_LS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <dirent.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#includ
e <list></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a nam
e="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespaceos.html#a5effa5ea3568d8c18e5c66039702dfa0"> 29</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<std::string></a>> <a class="code" href="namespaceos.html#a5effa5ea3568d8c18e5c66039702dfa0">ls</a>(<span class="keyword">const</span> std::string& directory)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  DIR* dir = opendir(directory.c_str());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span> (dir == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00034"></a><span class="l
ineno"> 34</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to opendir '"</span> + directory + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  std::list<std::string> result;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">struct </span>dirent* entry;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Zero `errno` before starting to call `readdir`. This is necessary</span></div><div class="line"><a name="l
00041"></a><span class="lineno"> 41</span>  <span class="comment">// to allow us to determine when `readdir` returns an error.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  errno = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">while</span> ((entry = readdir(dir)) != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (strcmp(entry->d_name, <span class="stringliteral">"."</span>) == 0 || strcmp(entry->d_name, <span class="stringliteral">".."</span>) == 0) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00047"></a><span class="line
no"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  result.push_back(entry->d_name);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (errno != 0) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Preserve `readdir` error.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to read directory"</span>);<
/div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  closedir(dir);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (closedir(dir) == -1) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to close directory"</span>);</div><div class="line"><a name="l00060"></a><span class="lineno">
60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_LS_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="posix_2ls_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</sp
an></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="l
ine"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_LS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_LS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <dirent.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#includ
e <list></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a nam
e="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="namespaceos.html#a5effa5ea3568d8c18e5c66039702dfa0"> 29</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<std::string></a>> <a class="code" href="namespaceos.html#a5effa5ea3568d8c18e5c66039702dfa0">ls</a>(<span class="keyword">const</span> std::string& directory)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  DIR* dir = opendir(directory.c_str());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span> (dir == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00034"></a><span class="l
ineno"> 34</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to opendir '"</span> + directory + <span class="stringliteral">"'"</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  std::list<std::string> result;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">struct </span>dirent* entry;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Zero `errno` before starting to call `readdir`. This is necessary</span></div><div class="line"><a name="l
00041"></a><span class="lineno"> 41</span>  <span class="comment">// to allow us to determine when `readdir` returns an error.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  errno = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">while</span> ((entry = readdir(dir)) != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (strcmp(entry->d_name, <span class="stringliteral">"."</span>) == 0 || strcmp(entry->d_name, <span class="stringliteral">".."</span>) == 0) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00047"></a><span class="line
no"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  result.push_back(entry->d_name);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span> (errno != 0) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Preserve `readdir` error.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classError.html">Error</a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to read directory"</span>);<
/div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  closedir(dir);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (closedir(dir) == -1) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>(<span class="stringliteral">"Failed to close directory"</span>);</div><div class="line"><a name="l00060"></a><span class="lineno">
60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_LS_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
<div class="ttc" id="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec_html_ae58e703656ab4a1bd5d9870441236727"><div class="ttname"><a href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">mesos::internal::slave::cni::spec::error</a></div><div class="ttdeci">std::string error(const std::string &msg, uint32_t code)</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2lseek_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2lseek_8hpp_source.html b/content/api/latest/c++/posix_2lseek_8hpp_source.html
index 09f64fc..f60f540 100644
--- a/content/api/latest/c++/posix_2lseek_8hpp_source.html
+++ b/content/api/latest/c++/posix_2lseek_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="posix_2lseek_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_LSEEK_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_LSEEK_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div c
lass="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="int__fd_8hpp.html">stout/os/int_fd.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="namespaceos.html#a66e299de75c7ce5e68969ccb299fbaed"> 25</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<off_t></a> <a class="code" href="namespaceos.html#a66e299de75c7ce5e68969ccb299fbaed">lseek</a>(<a class="code" href="int__fd_8hpp.html#aea4dbd
a01c90455f158ffa9b924c2f07">int_fd</a> fd, off_t offset, <span class="keywordtype">int</span> whence)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  off_t result = <a class="code" href="namespaceos.html#a66e299de75c7ce5e68969ccb299fbaed">::lseek</a>(fd, offset, whence);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span> (result < 0) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00032"></a><span class
="lineno"> 32</span> }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_LSEEK_HPP__</span></div><div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespaceos_html_a66e299de75c7ce5e68969ccb299fbaed"><div class="ttname"><a href="namespaceos.html#a66e299de75c7ce5e68969ccb299fbaed">os::lseek</a></div><div class="ttdeci">Try< off_t > lseek(int_fd fd, off_t offset, int whence)</div><div class="ttdef"><b>Definition:</b> lseek.hpp:25</div></div>
<div class="ttc" id="error_8hpp_html"><div class="ttname"><a href="error_8hpp.html">error.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2mac_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2mac_8hpp_source.html b/content/api/latest/c++/posix_2mac_8hpp_source.html
index 0de7a21..2bc08aa 100644
--- a/content/api/latest/c++/posix_2mac_8hpp_source.html
+++ b/content/api/latest/c++/posix_2mac_8hpp_source.html
@@ -52,9 +52,9 @@
<div class="title">mac.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="posix_2mac_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</s
pan></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="
line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_POSIX_MAC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_POSIX_MAC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <ifaddrs.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.
hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Network utilities.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span
class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Returns the MAC address of a given link device. The link device is</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// specified using its name (e.g., eth0). Returns error if the link</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// device is not found. Returns none if the link device is found, but</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// does not have a MAC address (e.g., loopback).</span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespacenet.html#aa0c3c89a627309104e
37ffb51987daa1"> 33</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<MAC></a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">struct </span>ifaddrs* ifaddr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span> (getifaddrs(&ifaddr) == -1) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a n
ame="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Indicates whether the link device is found or not.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">for</span> (<span class="keyword">struct</span> ifaddrs* ifa = ifaddr; ifa != <span class="keyword">nullptr</span>; ifa = ifa->ifa_next) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (ifa->ifa_name != <span class="keyword">nullptr</span>
&& !strcmp(ifa->ifa_name, name.c_str())) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  found = <span class="keyword">true</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># if defined(__linux__)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (ifa->ifa_addr != <span class="keyword">nullptr</span> && ifa->ifa_addr->sa_family == AF_PACKET) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">struct </span>sockaddr_ll* link = (<span class="keyword">struct </span>sockaddr_ll*) ifa->ifa_addr;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><
span class="lineno"> 51</span>  if (link->sll_halen == 6) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">struct </span>ether_addr* addr = (<span class="keyword">struct </span>ether_addr*) link->sll_addr;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classnet_1_1MAC.html">MAC</a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(addr->ether_addr_octet);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Ignore if the address is 0 so that the results are</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// consistent on both OSX and Linux.</span></div><div class="line"><a na
me="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>) == <span class="stringliteral">"00:00:00:00:00:00"</span>) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>;</div
><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># elif defined(__APPLE__)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (ifa->ifa_addr != <span class="keyword">nullptr</span> && ifa->ifa_addr->sa_family == AF_LINK) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">struct </span>sockaddr_dl* link = (<span class="keyword">struct </span>sockaddr_dl*) ifa->ifa_addr;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  if (link->sdl_type == IFT_ETHER &&
; link->sdl_alen == 6) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">struct </span>ether_addr* addr = (<span class="keyword">struct </span>ether_addr*) LLADDR(link);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classnet_1_1MAC.html">MAC</a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(addr->octet);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div
><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (!found) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral"
>"Cannot find the link device"</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#endif // __STOUT_POSIX_MAC_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname">
<a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="posix_2mac_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</s
pan></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="
line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_POSIX_MAC_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_POSIX_MAC_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <ifaddrs.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.
hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Network utilities.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span
class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// Returns the MAC address of a given link device. The link device is</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// specified using its name (e.g., eth0). Returns error if the link</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// device is not found. Returns none if the link device is found, but</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// does not have a MAC address (e.g., loopback).</span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="namespacenet.html#aa0c3c89a627309104e
37ffb51987daa1"> 33</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<MAC></a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">struct </span>ifaddrs* ifaddr = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span> (getifaddrs(&ifaddr) == -1) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a n
ame="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Indicates whether the link device is found or not.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">for</span> (<span class="keyword">struct</span> ifaddrs* ifa = ifaddr; ifa != <span class="keyword">nullptr</span>; ifa = ifa->ifa_next) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (ifa->ifa_name != <span class="keyword">nullptr</span>
&& !strcmp(ifa->ifa_name, name.c_str())) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  found = <span class="keyword">true</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor"># if defined(__linux__)</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (ifa->ifa_addr != <span class="keyword">nullptr</span> && ifa->ifa_addr->sa_family == AF_PACKET) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">struct </span>sockaddr_ll* link = (<span class="keyword">struct </span>sockaddr_ll*) ifa->ifa_addr;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><
span class="lineno"> 51</span>  if (link->sll_halen == 6) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">struct </span>ether_addr* addr = (<span class="keyword">struct </span>ether_addr*) link->sll_addr;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classnet_1_1MAC.html">MAC</a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(addr->ether_addr_octet);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Ignore if the address is 0 so that the results are</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// consistent on both OSX and Linux.</span></div><div class="line"><a na
me="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>) == <span class="stringliteral">"00:00:00:00:00:00"</span>) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>;</div
><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"># elif defined(__APPLE__)</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (ifa->ifa_addr != <span class="keyword">nullptr</span> && ifa->ifa_addr->sa_family == AF_LINK) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">struct </span>sockaddr_dl* link = (<span class="keyword">struct </span>sockaddr_dl*) ifa->ifa_addr;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  if (link->sdl_type == IFT_ETHER &&
; link->sdl_alen == 6) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">struct </span>ether_addr* addr = (<span class="keyword">struct </span>ether_addr*) LLADDR(link);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classnet_1_1MAC.html">MAC</a> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>(addr->octet);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#aa0c3c89a627309104e37ffb51987daa1">mac</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div
><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  freeifaddrs(ifaddr);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (!found) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral"
>"Cannot find the link device"</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#endif // __STOUT_POSIX_MAC_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname">
<a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="result_8hpp_html"><div class="ttname"><a href="result_8hpp.html">result.hpp</a></div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
<div class="ttc" id="namespacenet_html"><div class="ttname"><a href="namespacenet.html">net</a></div><div class="ttdef"><b>Definition:</b> ip.hpp:70</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2mkdir_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2mkdir_8hpp_source.html b/content/api/latest/c++/posix_2mkdir_8hpp_source.html
index 9a7d397..48acce6 100644
--- a/content/api/latest/c++/posix_2mkdir_8hpp_source.html
+++ b/content/api/latest/c++/posix_2mkdir_8hpp_source.html
@@ -55,7 +55,7 @@
<a href="posix_2mkdir_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//<
/span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class
="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_MKDIR_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_POSIX_MKDIR_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sys/stat.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a
name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2
include_2stout_2os_2constants_8hpp.html">stout/os/constants.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6"> 31</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">mkdir</a>(<span class="keyword">const</span> std::string& directory, <span class="keywordtype">bool</span> recursive = <span class="keyword">true</span>)</div><
div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span> (!recursive) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">mkdir</a>(directory.c_str(), 0755) < 0) {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::vector<std::string> tokens =</di
v><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(directory, <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespaceos.html#a493d7d8775f0ed778ad3b52ec19bbaab">os::PATH_SEPARATOR</a>));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::string <a class="code" href="namespacepath.html">path</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// We got an absolute path, so keep the leading slash.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span
> (directory.find_first_of(<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="namespaceos.html#a493d7d8775f0ed778ad3b52ec19bbaab">os::PATH_SEPARATOR</a>)) == 0) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  path = <a class="code" href="namespaceos.html#a493d7d8775f0ed778ad3b52ec19bbaab">os::PATH_SEPARATOR</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& token, tokens) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  path += token;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyw
ordflow">if</span> (::<a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">mkdir</a>(path.c_str(), 0755) < 0 && errno != EEXIST) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  path += <a class="code" href="namespaceos.html#a493d7d8775f0ed778ad3b52ec19bbaab">os::PATH_SEPARATOR</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div c
lass="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_MKDIR_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespacestrings_html_afffe11c8ecce961981653358520d6a04"><div class="ttname"><a href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a></div><div class="ttdeci">std::vector< std::string > tokenize(const std::string &s, const std::string &delims, const Option< size_t > &maxTokens=None())</div><div class="ttdef"><b>Definition:</b> strings.hpp:138</div></div>
<div class="ttc" id="nothing_8hpp_html"><div class="ttname"><a href="nothing_8hpp.html">nothing.hpp</a></div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/posix_2mkdtemp_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/posix_2mkdtemp_8hpp_source.html b/content/api/latest/c++/posix_2mkdtemp_8hpp_source.html
index c454249..0abca35 100644
--- a/content/api/latest/c++/posix_2mkdtemp_8hpp_source.html
+++ b/content/api/latest/c++/posix_2mkdtemp_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="posix_2mkdtemp_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// or more contributor license agreements. See the NOTICE file</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// distributed with this work for additional information</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// regarding copyright ownership. The ASF licenses this file</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00006"></a><s
pan class="lineno"> 6</span> <span class="comment">// "License"); you may not use this file except in compliance</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// di
stributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __STOUT_OS_POSIX_MKDTEMP_HPP__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define __STOUT_OS_POSIX_MKDTEMP_HPP__</span></di
v><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <stdlib.h></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <string.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a cl
ass="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="temp_8hpp.html">stout/os/temp.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a>
<span class="lineno"> 34</span> <span class="comment">// Creates a temporary directory using the specified path</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// template. The template may be any path with _6_ `Xs' appended to</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// it, for example /tmp/temp.XXXXXX. The trailing `Xs' are replaced</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// with a unique alphanumeric combination.</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6"> 38</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">mkdtemp</a>(<
/div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a> = <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(<a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">os::temp</a>(), <span class="stringliteral">"XXXXXX"</span>))</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">char</span>* <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a> = <span class="keyword">new</span> <span class="keywordtype">char</span>[<a class="code" href="namespacepath.html">path</a>.size() + 1];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ::memcpy(temp, <a class="code" href="namespacepath.htm
l">path</a>.c_str(), <a class="code" href="namespacepath.html">path</a>.size() + 1);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (::<a class="code" href="namespaceos.html#afe70fd86d13b8f10cafb222bb80adcf6">mkdtemp</a>(temp) != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  std::string result(temp);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">delete</span>[] <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  } <span class="keywordflow"
>else</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">delete</span>[] <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a na
me="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#endif // __STOUT_OS_POSIX_MKDTEMP_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="namespacepath_html_aa86b16a2171cec90bb3337930513ef0f"><div class="ttname"><a href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a></div><div class="ttdeci">std::string join(const std::string &path1, const std::string &path2, const char _separator=os::PATH_SEPARATOR)</div><div class="ttdef"><b>Definition:</b> path.hpp:56</div></div>
<div class="ttc" id="path_8hpp_html"><div class="ttname"><a href="path_8hpp.html">path.hpp</a></div></div>
[28/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/osx_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/osx_8hpp_source.html b/content/api/latest/c++/osx_8hpp_source.html
index 3e51884..70ddf72 100644
--- a/content/api/latest/c++/osx_8hpp_source.html
+++ b/content/api/latest/c++/osx_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">osx.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="osx_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></d
iv><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><
a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_OSX_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_OSX_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This file contains OSX-only OS utilities.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __APPLE__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/osx.hpp is only available on OSX systems."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00020"></
a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <libproc.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sys/sysctl.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <sys/types.h></span> <span class="comment">// For pid_t.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <queue></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <set></span></div><div class="line"><a nam
e="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#
160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="os_2os_8hpp.html">stout/os/os.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="sysctl_8hpp.html">stout/os/sysctl.hpp</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <spa
n class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a> =</div><div class="line"><a name="l00045"></a><span class="l
ineno"> 45</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_PID, pid).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>(1);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to get process via sysctl: "</span> + processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  } <span class="keywordflow
">else</span> <span class="keywordflow">if</span> (processes->size() != 1) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> kinfo_proc <a class="code" href="namespaceprocess.html">process</a> = processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()[0];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// The command line from 'process.kp_proc.p_comm' only includes the</span></div><div
class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// first 16 characters from "arg0" (i.e., the canonical executable</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// name). We can try to get "argv" via some sysctl magic. This first</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// requires determining "argc" via KERN_PROCARGS2 followed by the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// actual arguments via KERN_PROCARGS. This is still insufficient</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// with insufficient privilege (e.g., not being root). If we were</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</
span>  <span class="comment">// only interested in the "executable path" (i.e., the first</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// argument to 'exec' but none of the arguments) we could use</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// proc_pidpath() instead.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classOption.html">Option<std::string></a> command = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Alternative implemenations using KERN_PROCARGS2:</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span cl
ass="comment">// https://bitbucket.org/flub/psi-win32/src/d38f288de3b8/src/arch/macosx/macosx_process.c#cl-552</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// https://gist.github.com/nonowarn/770696</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#ifdef KERN_PROCARGS2</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Looking at the source code of XNU (the Darwin kernel for OS X:</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// www.opensource.apple.com/source/xnu/xnu-1699.24.23/bsd/kern/kern_sysctl.c),</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// it appears as th
ough KERN_PROCARGS2 writes 'argc' as the first</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// word of the returned bytes.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classTry.html">Try<std::string></a> args = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROCARGS2, pid).<a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">string</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (args.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> argc = *((<span class="k
eywordtype">int</span>*) args->data());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span> (argc > 0) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Now grab the arguments.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  args = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROCARGS, pid).<a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">string</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (args.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</
div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// At this point 'args' contains the parameters to 'exec'</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// delimited by null bytes, i.e., "executable path", then</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// "arg0" (the canonical executable name), then "arg1", then</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// "arg2", etc. Sometimes there are no arguments (argc = 1) so</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// all we care about is the "executable path", but when there</span></div><div class="line"><a name
="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// are arguments we grab "arg0" and on assuming that "arg0"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// really is the canonical executable name.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Tokenize the args by the null byte ('\0').</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  std::vector<std::string> tokens =</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(args.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get<
/a>(), std::string(1, <span class="charliteral">'\0'</span>));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (!tokens.empty()) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span> (argc == 1) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// When there are no arguments, all we care about is the</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// "executable path".</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  command = tokens[0];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <spa
n class="keywordflow">else</span> <span class="keywordflow">if</span> (argc > 1) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// When there are arguments, we skip the "executable path"</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// and just grab "arg0" -> "argN", assuming "arg0" is the</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// canonical executable name. In the case that we didn't</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// get enough tokens back from KERN_PROCARGS the following</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// code will end u
p just keeping 'command' None (i.e.,</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// tokens.size() will be <= 0).</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  tokens.erase(tokens.begin()); <span class="comment">// Remove path.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// In practice it appeared that we might get an 'argc'</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// which is greater than 'tokens.size()' which caused us</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// to get an invalid iterator from '
;tokens.begin() +</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// argc', thus we now check that condition here.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (static_cast<size_t>(argc) <= tokens.size()) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  tokens.erase(tokens.begin() + argc, tokens.end());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// If any tokens are left, consider them the command!</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span
class="keywordflow">if</span> (tokens.size() > 0) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  command = <a class="code" href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a>(<span class="stringliteral">" "</span>, tokens);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#endif</span></di
v><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// We also use proc_pidinfo() to get memory and CPU usage.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// NOTE: There are several pitfalls to using proc_pidinfo().</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// In particular:</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// -This will not work for many root processes.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// -This may not work for processes owned by other users.</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="
comment">// -However, this always works for processes owned by the same user.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// This beats using task_for_pid(), which only works for the same pid.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// For further discussion around these issues,</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// see: http://code.google.com/p/psutil/issues/detail?id=297</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  proc_taskinfo task;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = proc_pidinfo(pid, PROC_PIDTASKINFO, 0, &task, <span class="keywor
d">sizeof</span>(task));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// It appears that zombie processes on OS X do not have sessions and</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// result in ESRCH.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">int</span> session = getsid(pid);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (size != <span class="keyword">sizeof</span>(task)) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> Process(process.kp_proc.p_pid,</div><div
class="line"><a name="l00148"></a><span class="lineno"> 148</span>  process.kp_eproc.e_ppid,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  process.kp_eproc.e_pgid,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  session > 0 ? session : <a class="code" href="classOption.html">Option<pid_t>::none</a>(),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> 
command.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(std::string(process.kp_proc.p_comm)),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  process.kp_proc.p_stat & SZOMB);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span> Process(process.kp_proc.p_pid,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  process.kp_eproc.e_ppid,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  process.kp_eproc.e_pgid,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  session > 0 ? session : <a class="code" href="classOption.html">Optio
n<pid_t>::none</a>(),</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classBytes.html">Bytes</a>(task.pti_resident_size),</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classNanoseconds.html">Nanoseconds</a>(task.pti_total_user),</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classNanoseconds.html">Nanoseconds</a>(task.pti_total_system),</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  command.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(std::string(process.kp_proc.p_comm)),</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  process.kp_proc.p_stat & SZOMB);</div><div class="line"><a name="l00166"></a><s
pan class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<int></a> maxproc = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_MAXPROC).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83
ba10b008764">integer</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span> (maxproc.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(maxproc.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> processes =</div><div cla
ss="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_ALL).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>(maxproc.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span> (processes.isError()) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(processes.error());</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><sp
an class="lineno"> 185</span>  std::set<pid_t> result;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> kinfo_proc& process, processes.get()) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  result.insert(process.kp_proc.p_pid);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment">// Returns the total
size of main and free memory.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Memory></a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  Memory <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<int64_t></a> totalMemory = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_HW, HW_MEMSIZE).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba1
0b008764">integer</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> (totalMemory.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(totalMemory.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  memory.total = <a class="code" href="classBytes.html">Bytes</a>(totalMemory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00204"></a><span class="linen
o"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// Size of free memory is available in terms of number of</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// free pages on Mac OS X.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> pageSize = <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> freeCount;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">size_t</span> length = <spa
n class="keyword">sizeof</span>(freeCount);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span> (sysctlbyname(</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="stringliteral">"vm.page_free_count"</span>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  &freeCount,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  &length,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  0) != 0) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <a class="code"
href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  memory.free = <a class="code" href="classBytes.html">Bytes</a>(freeCount * pageSize);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">struct </span>xsw_usage <a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  length = <span class="keyword">sizeof</span>(<span class="keyword">struct </span>xsw_usage);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (sysctlbyname(</div><div class="line"><a name="l00225"></a><span class="lineno"
> 225</span>  <span class="stringliteral">"vm.swapusage"</span>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  &<a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  &length,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  0) != 0) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  memory.totalSwap
= <a class="code" href="classBytes.html">Bytes</a>(<a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>.xsu_total * pageSize);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  memory.freeSwap = <a class="code" href="classBytes.html">Bytes</a>(<a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>.xsu_avail * pageSize);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> } <
span class="comment">// namespace os {</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#endif // __STOUT_OS_OSX_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="osx_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></d
iv><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><
a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_OSX_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_OSX_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This file contains OSX-only OS utilities.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __APPLE__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/osx.hpp is only available on OSX systems."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00020"></
a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <libproc.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sys/sysctl.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <sys/types.h></span> <span class="comment">// For pid_t.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <queue></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <set></span></div><div class="line"><a nam
e="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <<a class="code" href="strings_8hpp.html">stout/strings.hpp</a>></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#
160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <<a class="code" href="os_2os_8hpp.html">stout/os/os.hpp</a>></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <<a class="code" href="sysctl_8hpp.html">stout/os/sysctl.hpp</a>></span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <spa
n class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a> =</div><div class="line"><a name="l00045"></a><span class="l
ineno"> 45</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_PID, pid).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>(1);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to get process via sysctl: "</span> + processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  } <span class="keywordflow
">else</span> <span class="keywordflow">if</span> (processes->size() != 1) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">const</span> kinfo_proc <a class="code" href="namespaceprocess.html">process</a> = processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()[0];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// The command line from 'process.kp_proc.p_comm' only includes the</span></div><div
class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// first 16 characters from "arg0" (i.e., the canonical executable</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// name). We can try to get "argv" via some sysctl magic. This first</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// requires determining "argc" via KERN_PROCARGS2 followed by the</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// actual arguments via KERN_PROCARGS. This is still insufficient</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// with insufficient privilege (e.g., not being root). If we were</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</
span>  <span class="comment">// only interested in the "executable path" (i.e., the first</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// argument to 'exec' but none of the arguments) we could use</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// proc_pidpath() instead.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classOption.html">Option<std::string></a> command = <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Alternative implemenations using KERN_PROCARGS2:</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span cl
ass="comment">// https://bitbucket.org/flub/psi-win32/src/d38f288de3b8/src/arch/macosx/macosx_process.c#cl-552</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// https://gist.github.com/nonowarn/770696</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#ifdef KERN_PROCARGS2</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Looking at the source code of XNU (the Darwin kernel for OS X:</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// www.opensource.apple.com/source/xnu/xnu-1699.24.23/bsd/kern/kern_sysctl.c),</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// it appears as th
ough KERN_PROCARGS2 writes 'argc' as the first</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// word of the returned bytes.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classTry.html">Try<std::string></a> args = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROCARGS2, pid).<a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">string</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (args.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> argc = *((<span class="k
eywordtype">int</span>*) args->data());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span> (argc > 0) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Now grab the arguments.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  args = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROCARGS, pid).<a class="code" href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">string</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (args.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</
div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// At this point 'args' contains the parameters to 'exec'</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// delimited by null bytes, i.e., "executable path", then</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// "arg0" (the canonical executable name), then "arg1", then</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// "arg2", etc. Sometimes there are no arguments (argc = 1) so</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// all we care about is the "executable path", but when there</span></div><div class="line"><a name
="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// are arguments we grab "arg0" and on assuming that "arg0"</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// really is the canonical executable name.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Tokenize the args by the null byte ('\0').</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  std::vector<std::string> tokens =</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="namespacestrings.html#afffe11c8ecce961981653358520d6a04">strings::tokenize</a>(args.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get<
/a>(), std::string(1, <span class="charliteral">'\0'</span>));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> (!tokens.empty()) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span> (argc == 1) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// When there are no arguments, all we care about is the</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// "executable path".</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  command = tokens[0];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <spa
n class="keywordflow">else</span> <span class="keywordflow">if</span> (argc > 1) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// When there are arguments, we skip the "executable path"</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// and just grab "arg0" -> "argN", assuming "arg0" is the</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// canonical executable name. In the case that we didn't</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">// get enough tokens back from KERN_PROCARGS the following</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// code will end u
p just keeping 'command' None (i.e.,</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// tokens.size() will be <= 0).</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  tokens.erase(tokens.begin()); <span class="comment">// Remove path.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// In practice it appeared that we might get an 'argc'</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// which is greater than 'tokens.size()' which caused us</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// to get an invalid iterator from '
;tokens.begin() +</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// argc', thus we now check that condition here.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span> (static_cast<size_t>(argc) <= tokens.size()) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  tokens.erase(tokens.begin() + argc, tokens.end());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// If any tokens are left, consider them the command!</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span
class="keywordflow">if</span> (tokens.size() > 0) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  command = <a class="code" href="namespacestrings.html#ac315a6174f56cba0d8295f84da265416">strings::join</a>(<span class="stringliteral">" "</span>, tokens);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#endif</span></di
v><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// We also use proc_pidinfo() to get memory and CPU usage.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// NOTE: There are several pitfalls to using proc_pidinfo().</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// In particular:</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// -This will not work for many root processes.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// -This may not work for processes owned by other users.</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="
comment">// -However, this always works for processes owned by the same user.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// This beats using task_for_pid(), which only works for the same pid.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// For further discussion around these issues,</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// see: http://code.google.com/p/psutil/issues/detail?id=297</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  proc_taskinfo task;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = proc_pidinfo(pid, PROC_PIDTASKINFO, 0, &task, <span class="keywor
d">sizeof</span>(task));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// It appears that zombie processes on OS X do not have sessions and</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// result in ESRCH.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">int</span> session = getsid(pid);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (size != <span class="keyword">sizeof</span>(task)) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> Process(process.kp_proc.p_pid,</div><div
class="line"><a name="l00148"></a><span class="lineno"> 148</span>  process.kp_eproc.e_ppid,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  process.kp_eproc.e_pgid,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  session > 0 ? session : <a class="code" href="classOption.html">Option<pid_t>::none</a>(),</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="structNone.html">None</a>(),</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> 
command.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(std::string(process.kp_proc.p_comm)),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  process.kp_proc.p_stat & SZOMB);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">return</span> Process(process.kp_proc.p_pid,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  process.kp_eproc.e_ppid,</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  process.kp_eproc.e_pgid,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  session > 0 ? session : <a class="code" href="classOption.html">Optio
n<pid_t>::none</a>(),</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classBytes.html">Bytes</a>(task.pti_resident_size),</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classNanoseconds.html">Nanoseconds</a>(task.pti_total_user),</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="classNanoseconds.html">Nanoseconds</a>(task.pti_total_system),</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  command.<a class="code" href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">getOrElse</a>(std::string(process.kp_proc.p_comm)),</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  process.kp_proc.p_stat & SZOMB);</div><div class="line"><a name="l00166"></a><s
pan class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<int></a> maxproc = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_MAXPROC).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83
ba10b008764">integer</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span> (maxproc.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(maxproc.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> processes =</div><div cla
ss="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_ALL).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>(maxproc.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span> (processes.isError()) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(processes.error());</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><sp
an class="lineno"> 185</span>  std::set<pid_t> result;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> kinfo_proc& process, processes.get()) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  result.insert(process.kp_proc.p_pid);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment">// Returns the total
size of main and free memory.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Memory></a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  Memory <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<int64_t></a> totalMemory = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_HW, HW_MEMSIZE).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba1
0b008764">integer</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> (totalMemory.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(totalMemory.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  memory.total = <a class="code" href="classBytes.html">Bytes</a>(totalMemory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00204"></a><span class="linen
o"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// Size of free memory is available in terms of number of</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// free pages on Mac OS X.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> pageSize = <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> freeCount;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">size_t</span> length = <spa
n class="keyword">sizeof</span>(freeCount);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span> (sysctlbyname(</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="stringliteral">"vm.page_free_count"</span>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  &freeCount,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  &length,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  0) != 0) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> <a class="code"
href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  memory.free = <a class="code" href="classBytes.html">Bytes</a>(freeCount * pageSize);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">struct </span>xsw_usage <a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  length = <span class="keyword">sizeof</span>(<span class="keyword">struct </span>xsw_usage);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (sysctlbyname(</div><div class="line"><a name="l00225"></a><span class="lineno"
> 225</span>  <span class="stringliteral">"vm.swapusage"</span>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  &<a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  &length,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  0) != 0) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  memory.totalSwap
= <a class="code" href="classBytes.html">Bytes</a>(<a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>.xsu_total * pageSize);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  memory.freeSwap = <a class="code" href="classBytes.html">Bytes</a>(<a class="code" href="namespacemesos_1_1internal.html#a91a5bc5e418e8712bb512721b5abc46d">usage</a>.xsu_avail * pageSize);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> } <
span class="comment">// namespace os {</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#endif // __STOUT_OS_OSX_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< std::string ></a></div></div>
<div class="ttc" id="classOption_html_abbbed1bc42634fa9092160b16be6ca7e"><div class="ttname"><a href="classOption.html#abbbed1bc42634fa9092160b16be6ca7e">Option::getOrElse</a></div><div class="ttdeci">T getOrElse(U &&u) const &</div><div class="ttdef"><b>Definition:</b> option.hpp:127</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
@@ -62,7 +62,7 @@
<div class="ttc" id="namespaceos_html_aa98ca8ac255e2b9c689979a1b40084d3"><div class="ttname"><a href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a></div><div class="ttdeci">Try< std::list< Process > > processes()</div><div class="ttdef"><b>Definition:</b> os.hpp:182</div></div>
<div class="ttc" id="namespaceos_html_af0898f40a19c3804347e30b9efa0984a"><div class="ttname"><a href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a></div><div class="ttdeci">size_t pagesize()</div><div class="ttdef"><b>Definition:</b> pagesize.hpp:24</div></div>
<div class="ttc" id="none_8hpp_html"><div class="ttname"><a href="none_8hpp.html">none.hpp</a></div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
<div class="ttc" id="structos_1_1sysctl_html_af54897c91536ccd5d829daabbac64266"><div class="ttname"><a href="structos_1_1sysctl.html#af54897c91536ccd5d829daabbac64266">os::sysctl::string</a></div><div class="ttdeci">Try< std::string > string() const </div><div class="ttdef"><b>Definition:</b> sysctl.hpp:188</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/permissions_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/permissions_8hpp_source.html b/content/api/latest/c++/permissions_8hpp_source.html
index be60a9d..15087cc 100644
--- a/content/api/latest/c++/permissions_8hpp_source.html
+++ b/content/api/latest/c++/permissions_8hpp_source.html
@@ -59,7 +59,7 @@
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_aead39710af2622ee9b0d412f62e90aa5"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#aead39710af2622ee9b0d412f62e90aa5">S_IWUSR</a></div><div class="ttdeci">const mode_t S_IWUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:306</div></div>
<div class="ttc" id="structos_1_1Permissions_html_aff088e7e48d02dea27b19d0983d49b69"><div class="ttname"><a href="structos_1_1Permissions.html#aff088e7e48d02dea27b19d0983d49b69">os::Permissions::group</a></div><div class="ttdeci">struct os::Permissions::@21 group</div></div>
<div class="ttc" id="namespaceproc_html_a34396c6140a28f583dc13fee3c3c35d4"><div class="ttname"><a href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a></div><div class="ttdeci">Result< ProcessStatus > status(pid_t pid)</div><div class="ttdef"><b>Definition:</b> proc.hpp:166</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html_a66cff14a0638cde9f422c7a4b0938e61"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#a66cff14a0638cde9f422c7a4b0938e61">S_IRUSR</a></div><div class="ttdeci">const mode_t S_IRUSR</div><div class="ttdef"><b>Definition:</b> windows.hpp:305</div></div>
<div class="ttc" id="namespaceos_html_a3fc3402e6d83c2e2f1dc680d77489a29"><div class="ttname"><a href="namespaceos.html#a3fc3402e6d83c2e2f1dc680d77489a29">os::permissions</a></div><div class="ttdeci">Try< Permissions > permissions(const std::string &path)</div><div class="ttdef"><b>Definition:</b> permissions.hpp:61</div></div>
[38/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/find_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/find_8hpp_source.html b/content/api/latest/c++/find_8hpp_source.html
index 812d966..7bee278 100644
--- a/content/api/latest/c++/find_8hpp_source.html
+++ b/content/api/latest/c++/find_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="find_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></
div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line">
<a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_FIND_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_FIND_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>
0;<span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="path_8hpp.html">stout/path.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="ls_8hpp.html">stout/os/ls.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="stat_8hpp.html">stout/os/stat.hpp</a>></span></div><div class="line"><a name="l0002
6"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Return the list of file paths that match the given pattern by recursively</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// searching the given directory. A match is successful if the pattern is a</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// substring of the file name.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span cl
ass="comment">// NOTE: Directory path should not end with '/'.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// NOTE: Symbolic links are not followed.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// TODO(vinod): Support regular expressions for pattern.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// TODO(vinod): Consider using ftw or a non-recursive approach.</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespaceos.html#a965c9c19022c17c26fc5720f718e6c1a"> 37</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<std::string></a>> <a class="code" href="namespaceos.html#a965c9c19022c17c26fc5720f718e6c1a">find</a>(</div><div class="line"><a name="l00038"></a><span class="l
ineno"> 38</span>  <span class="keyword">const</span> std::string& directory,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> std::string& pattern)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::list<std::string> results;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">stat::isdir</a>(directory)) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"'"</span> +
directory + <span class="stringliteral">"' is not a directory"</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classTry.html">Try<std::list<std::string></a>> entries = <a class="code" href="namespaceos.html#a5effa5ea3568d8c18e5c66039702dfa0">ls</a>(directory);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span> (entries.<a class="code" href="classTry.html#a6543d7d5db4f298bcd673bf3cd509acc">isSome</a>()) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& entry, entries.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18
e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::string <a class="code" href="namespacepath.html">path</a> = <a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(directory, entry);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// If it's a directory, recurse.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceos_1_1stat.html#aa86aaa21fefc0e9cab89050b60aeca40">stat::isdir</a>(path) && !<a class="code" href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">stat::islink</a>(path)) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="classTry.html">Try<std::list<std::string></a>> matches = <a class="code" hre
f="namespaceos.html#a965c9c19022c17c26fc5720f718e6c1a">find</a>(path, pattern);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span> (matches.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> matches;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> std::string& match, matches.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  results.push_back(match);</div><div class="line"><a name="l00059"></a><span class
="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span> (entry.find(pattern) != std::string::npos) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  results.push_back(path); <span class="comment">// Matched the file pattern!</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l000
68"></a><span class="lineno"> 68</span>  <span class="keywordflow">return</span> results;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#endif // __STOUT_OS_FIND_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a0ba4d272b938da76e404648103077480"><div class="ttname"><a href="namespaceos_1_1stat.html#a0ba4d272b938da76e404648103077480">os::stat::islink</a></div><div class="ttdeci">bool islink(const std::string &path)</div><div class="ttdef"><b>Definition:</b> stat.hpp:78</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/format_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/format_8hpp_source.html b/content/api/latest/c++/format_8hpp_source.html
index 7cde064..4f84d72 100644
--- a/content/api/latest/c++/format_8hpp_source.html
+++ b/content/api/latest/c++/format_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="format_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_FORMAT_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_FORMAT_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <stdarg.h></span> <span class="comment">// For 'va_list', 'va_start', 'va_end'.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// For 'vasprintf'.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00020"></a><s
pan class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="windows_2format_8hpp.html">stout/windows/format.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// For 'is_pod'.</span></d
iv><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// The 'strings::format' functions produces strings
based on the</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// printf family of functions. Except, unlike the printf family of</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// functions, the 'strings::format' routines attempt to "stringify"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// any arguments that are not POD types (i.e., "plain old data":</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// primitives, pointers, certain structs/classes and unions,</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// etc). This enables passing structs/classes to 'strings::format'</span></div><div class="line"><a name="l00039"></a><span cl
ass="lineno"> 39</span> <span class="comment">// provided there is a definition/specialization of 'ostream::operator</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// <<' available for that type. Note that the '%s' format specifier is</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// expected for each argument that gets stringified. A specialization</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// for std::string is also provided so that std::string::c_str is not</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// necessary (but again, '%s' is expected as the format specifier).</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a
name="l00045"></a><span class="lineno"><a class="line" href="namespacestrings.html"> 45</a></span> <span class="keyword">namespace </span><a class="code" href="namespacestrings.html">strings</a> {</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="namespacestrings_1_1internal.html"> 46</a></span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">format</a>(<span class="keyword">const</span> std::string& fmt, va_list args);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <a class="code" href="classTry.html">Try<std::string><
/a> <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">format</a>(<span class="keyword">const</span> std::string fmt, ...);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">bool</span> b></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify.html"> 52</a></span> <span class="keyword">struct </span><a class="code" href="structstrings_1_1internal_1_1stringify.html">stringify</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00055"></a><
span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">template</span> <<span class="keyword">typename</span>... T></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="namespacestrings.html#a7884a23bea2a6543b8a93ad48faabe0c"> 58</a></span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">format</a>(<span class="keyword">const</span> std::string& s, <span class="keyword">const</span> T&... t)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <a class="code" href="namespacestrings_1_1internal.html#a
870e2db270d980f83de20525ec414d2a">internal::format</a>(</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  s,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="structstrings_1_1internal_1_1stringify.html">internal::stringify</a><T, !std::is_pod<T>::value>(t).<span class="keyword">get</span>()...);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">namespace </span><a class="code" href="namespaceinternal.html">internal</a> {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"><a
class="line" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a"> 68</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">format</a>(<span class="keyword">const</span> std::string& fmt, va_list args)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">char</span>* <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span> (<a class="code" href="windows_2format_8hpp.html#acdb2831d0b4f530af6056f7745b77707">vasprintf</a>(&temp, fmt.c_str(), args) == -1) {</div><div class="line"><a name="l00072"></a><span class="linen
o"> 72</span>  <span class="comment">// Note that temp is undefined, so we do not need to call free.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to format '"</span> + fmt + <span class="stringliteral">"' (possibly out of memory)"</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::string result(temp);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  free(temp);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div><div class="line"><a name="
l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// NOTE: 'fmt' cannot be 'const std::string&' because passing an</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// argument of reference type as the second argument of 'va_start'</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// results in undefined behavior.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// Refer to http://stackoverflow.com/a/222314 for further details.</span></div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespacestrings_1_1internal.html#a8245296db9a2965cadbd9ca1dec6f5
ff"> 85</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">format</a>(<span class="keyword">const</span> std::string fmt, ...)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  va_list args;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  va_start(args, fmt);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::string></a> result = <a class="code" href="namespacestrings_1_1internal.html#a870e2db270d980f83de20525ec414d2a">format</a>(fmt, args);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  va_end(args);</div><div class=
"line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01T_00_01false_01_4.html"> 96</a></span> <span class="keyword">struct </span><a class="code" href="structstrings_1_1internal_1_1stringify.html">stringify</a><T, false></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"
><a class="line" href="structstrings_1_1internal_1_1stringify_3_01T_00_01false_01_4.html#a5bd606e6f0fbfbcf32d54dace02f63b5"> 98</a></span>  <a class="code" href="structstrings_1_1internal_1_1stringify_3_01T_00_01false_01_4.html#a5bd606e6f0fbfbcf32d54dace02f63b5">stringify</a>(<span class="keyword">const</span> T& _t) : t(_t) {}</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01T_00_01false_01_4.html#a7925157b4c187ec11dddfae7b5e72e34"> 99</a></span>  <span class="keyword">const</span> T& <span class="keyword">get</span>() { <span class="keywordflow">return</span> t; }</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01T_00_01false_01_4.html#a113eb332313fd851c9a2432274683e45"> 100</a></span>  <span class="keyword">const</span> T& <a class="code" href="structstrings_1_1internal_1_1stringify_3_01
T_00_01false_01_4.html#a113eb332313fd851c9a2432274683e45">t</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> };</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4.html"> 105</a></span> <span class="keyword">struct </span><a class="code" href="structstrings_1_1internal_1_1stringify.html">stringify</a><T, true></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1s
tringify_3_01T_00_01true_01_4.html#a8bbe1c2705c0084a8e57f44524facf1b"> 107</a></span>  <a class="code" href="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4.html#a8bbe1c2705c0084a8e57f44524facf1b">stringify</a>(<span class="keyword">const</span> T& _t) : s(::<a class="code" href="structstrings_1_1internal_1_1stringify.html">stringify</a>(_t)) {}</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4.html#a3088e9b35c6906bf0458bb16d01346a9"> 108</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">get</span>() { <span class="keywordflow">return</span> s.c_str(); }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// NOTE: We need to do the copy here, because the temporary
returned by</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// ::stringify() doesn't outlive the get() call inside strings::format().</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// TODO(vinod): Figure out a fix for using const ref here.</span></div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4.html#a2818dfd0c50aa363733f2ae151f7fb10"> 113</a></span>  <span class="keyword">const</span> std::string <a class="code" href="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4.html#a2818dfd0c50aa363733f2ae151f7fb10">s</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> };</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class=
"lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">template</span> <></div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4.html"> 118</a></span> <span class="keyword">struct </span><a class="code" href="structstrings_1_1internal_1_1stringify.html">stringify</a><<a class="code" href="namespacestd.html">std</a>::string, true></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4.html#adf2ceef3d4241e2a606eef8f4587a8cb"> 120</a></span>  <a class="code" href="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4.html#adf2ceef3d4241e2a606eef8f4587a8cb">stringify</a>(<span cla
ss="keyword">const</span> std::string& _s) : s(_s) {}</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4.html#a848a01a442b180737ed8cc3b740bfc0d"> 121</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">get</span>() { <span class="keywordflow">return</span> s.c_str(); }</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4.html#abdcb23ba785498cd83f9b00b416913ca"> 122</a></span>  <span class="keyword">const</span> std::string& <a class="code" href="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4.html#abdcb23ba785498cd83f9b00b416913ca">s</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> };</div><div class="line"><a name="l00124"></a><span
class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> } <span class="comment">// namespace internal {</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> } <span class="comment">// namespace strings {</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#endif // __STOUT_FORMAT_HPP__</span></div><div class="ttc" id="windows_2format_8hpp_html"><div class="ttname"><a href="windows_2format_8hpp.html">format.hpp</a></div></div>
<div class="ttc" id="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4_html_a8bbe1c2705c0084a8e57f44524facf1b"><div class="ttname"><a href="structstrings_1_1internal_1_1stringify_3_01T_00_01true_01_4.html#a8bbe1c2705c0084a8e57f44524facf1b">strings::internal::stringify< T, true >::stringify</a></div><div class="ttdeci">stringify(const T &_t)</div><div class="ttdef"><b>Definition:</b> format.hpp:107</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4_html_abdcb23ba785498cd83f9b00b416913ca"><div class="ttname"><a href="structstrings_1_1internal_1_1stringify_3_01std_1_1string_00_01true_01_4.html#abdcb23ba785498cd83f9b00b416913ca">strings::internal::stringify< std::string, true >::s</a></div><div class="ttdeci">const std::string & s</div><div class="ttdef"><b>Definition:</b> format.hpp:122</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespacestrings_html"><div class="ttname"><a href="namespacestrings.html">strings</a></div><div class="ttdef"><b>Definition:</b> format.hpp:45</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/freebsd_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/freebsd_8hpp_source.html b/content/api/latest/c++/freebsd_8hpp_source.html
index 3e66f10..76de591 100644
--- a/content/api/latest/c++/freebsd_8hpp_source.html
+++ b/content/api/latest/c++/freebsd_8hpp_source.html
@@ -52,11 +52,11 @@
<div class="title">freebsd.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="freebsd_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span
></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="lin
e"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_FREEBSD_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_FREEBSD_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This file contains FreeBSD-only OS utilities.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __FreeBSD__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/freebsd.hpp is only available on FreeBSD systems."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif</span></div><div class=
"line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <sys/user.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="sysctl_8hpp.html">stout/os/sysctl.hpp</a>></span></div><div c
lass="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389"> 30</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// KE
RN_PROC_PID fails for zombies, so we fetch the whole process table and</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// find our process manually.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> kinfos =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_ALL).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</sp
an> (kinfos.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to retrieve process table via sysctl: "</span> +</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  kinfos.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> kinfo_proc& kinfo, kinfos.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">
get</a>()) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (kinfo.ki_pid == pid) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">pagesize</a> = <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="structos_1_1Process.html">Process</a>(kinfo.ki_pid,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  kinfo.ki_ppid,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  kinfo.ki_pgid,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> 
kinfo.ki_sid,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  kinfo.ki_rssize * pagesize,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  kinfo.ki_rusage.ru_utime,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  kinfo.ki_rusage.ru_stime,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  kinfo.ki_comm,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  kinfo.ki_stat == SZOMB);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno
"> 58</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073"> 62</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::set<pid_t> result;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</spa
n> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> kinfos =</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_ALL).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> kinfo_proc& kinfo, kinfos.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  result.insert(kinfo.ki_pid);</div><div class="line"
><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// Returns the total size of main and free memory.</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4"> 78</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Memory></a> <a class="code" href="namespaceos.html#a23a
7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="structos_1_1Memory.html">Memory</a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<int64_t></a> physicalMemory = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_HW, HW_PHYSMEM).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">integer</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (physicalMemory.<a class="code" href="classTry.html#a0b98f9
5163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(physicalMemory.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  memory.<a class="code" href="structos_1_1Memory.html#a3670204f7fb13a96ca0e278f49b91282">total</a> = <a class="code" href="classBytes.html">Bytes</a>(physicalMemory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> pageSize = <a
class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> freeCount;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">size_t</span> length = <span class="keyword">sizeof</span>(freeCount);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (sysctlbyname(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="stringliteral">"vm.stats.v_free_count"</span>,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> 
&freeCount,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  &length,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  0) != 0) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  memory.<a class="code" href="structos_1_1Memory.html#ab447e8e30892e0d5f0e3a976e6d80cde">free</a> = <a class="code" href="classBytes.html">Bytes</a>(freeCount * pageSize);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="
l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">int</span> totalBlocks = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">int</span> usedBlocks = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">int</span> mib[3];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">size_t</span> mibSize = 2;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (::sysctlnametomib(<span class="stringliteral">"vm.swap_info"</span>, mib, &mibSize) != 0) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html"
>ErrnoError</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// FreeBSD supports multiple swap devices. Here we sum across all of them.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">struct </span>xswdev xswd;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">size_t</span> xswdSize = <span class="keyword">sizeof</span>(xswd);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">int</span>* mibDevice = &(mib[mibSize + 1]);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">for</span> (*mibDevice = 0; ; (*mi
bDevice)++) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html">sysctl</a>(mib, 3, &xswd, &xswdSize, <span class="keyword">nullptr</span>, 0) != 0) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span> (errno == ENOENT) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><sp
an class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  totalBlocks += xswd.xsw_nblks;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  usedBlocks += xswd.xsw_used;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  memory.<a class="code" href="structos_1_1Memory.html#a00f1a2071778c1ce10eff411fae079d5">totalSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(totalBlocks * pageSize);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  memory.<a class="code" href="structos_1_1Memory.html#a99857d2d965390fe2e88f417037dce55">freeSwap</a> = <a class="code" href="classBytes.html">Bytes</a>((totalBlocks - usedBlocks) * pageSize);</div><div c
lass="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="freebsd_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span
></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="lin
e"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_FREEBSD_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_FREEBSD_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// This file contains FreeBSD-only OS utilities.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifndef __FreeBSD__</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#error "stout/os/freebsd.hpp is only available on FreeBSD systems."</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif</span></div><div class=
"line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <sys/types.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <sys/user.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <<a class="code" href="pagesize_8hpp.html">stout/os/pagesize.hpp</a>></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="sysctl_8hpp.html">stout/os/sysctl.hpp</a>></span></div><div c
lass="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389"> 30</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Process></a> <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>(<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// KE
RN_PROC_PID fails for zombies, so we fetch the whole process table and</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// find our process manually.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> kinfos =</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_ALL).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</sp
an> (kinfos.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to retrieve process table via sysctl: "</span> +</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  kinfos.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> kinfo_proc& kinfo, kinfos.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">
get</a>()) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (kinfo.ki_pid == pid) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">size_t</span> <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">pagesize</a> = <a class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="structos_1_1Process.html">Process</a>(kinfo.ki_pid,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  kinfo.ki_ppid,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  kinfo.ki_pgid,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> 
kinfo.ki_sid,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  kinfo.ki_rssize * pagesize,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  kinfo.ki_rusage.ru_utime,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  kinfo.ki_rusage.ru_stime,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  kinfo.ki_comm,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  kinfo.ki_stat == SZOMB);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno
"> 58</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073"> 62</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<pid_t></a>> <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::set<pid_t> result;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</spa
n> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::vector<kinfo_proc></a>> kinfos =</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_KERN, KERN_PROC, KERN_PROC_ALL).<a class="code" href="structos_1_1sysctl.html#a519389727f9ecc76af96ed087fcff691">table</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> kinfo_proc& kinfo, kinfos.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>()) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  result.insert(kinfo.ki_pid);</div><div class="line"
><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// Returns the total size of main and free memory.</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4"> 78</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Memory></a> <a class="code" href="namespaceos.html#a23a
7b8f4b4c145ad212381e89d4b6dc4">memory</a>()</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="structos_1_1Memory.html">Memory</a> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<int64_t></a> physicalMemory = <a class="code" href="structos_1_1sysctl.html">os::sysctl</a>(CTL_HW, HW_PHYSMEM).<a class="code" href="structos_1_1sysctl.html#ae4fa1e9a1934a5f694a83ba10b008764">integer</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span> (physicalMemory.<a class="code" href="classTry.html#a0b98f9
5163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(physicalMemory.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  memory.<a class="code" href="structos_1_1Memory.html#a3670204f7fb13a96ca0e278f49b91282">total</a> = <a class="code" href="classBytes.html">Bytes</a>(physicalMemory.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">const</span> <span class="keywordtype">size_t</span> pageSize = <a
class="code" href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> freeCount;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">size_t</span> length = <span class="keyword">sizeof</span>(freeCount);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span> (sysctlbyname(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="stringliteral">"vm.stats.v_free_count"</span>,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> 
&freeCount,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  &length,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  0) != 0) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  memory.<a class="code" href="structos_1_1Memory.html#ab447e8e30892e0d5f0e3a976e6d80cde">free</a> = <a class="code" href="classBytes.html">Bytes</a>(freeCount * pageSize);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="
l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">int</span> totalBlocks = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">int</span> usedBlocks = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">int</span> mib[3];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">size_t</span> mibSize = 2;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span> (::sysctlnametomib(<span class="stringliteral">"vm.swap_info"</span>, mib, &mibSize) != 0) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html"
>ErrnoError</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// FreeBSD supports multiple swap devices. Here we sum across all of them.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">struct </span>xswdev xswd;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">size_t</span> xswdSize = <span class="keyword">sizeof</span>(xswd);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">int</span>* mibDevice = &(mib[mibSize + 1]);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">for</span> (*mibDevice = 0; ; (*mi
bDevice)++) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (::<a class="code" href="structos_1_1sysctl.html">sysctl</a>(mib, 3, &xswd, &xswdSize, <span class="keyword">nullptr</span>, 0) != 0) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span> (errno == ENOENT) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><sp
an class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  totalBlocks += xswd.xsw_nblks;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  usedBlocks += xswd.xsw_used;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  memory.<a class="code" href="structos_1_1Memory.html#a00f1a2071778c1ce10eff411fae079d5">totalSwap</a> = <a class="code" href="classBytes.html">Bytes</a>(totalBlocks * pageSize);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  memory.<a class="code" href="structos_1_1Memory.html#a99857d2d965390fe2e88f417037dce55">freeSwap</a> = <a class="code" href="classBytes.html">Bytes</a>((totalBlocks - usedBlocks) * pageSize);</div><div c
lass="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#a23a7b8f4b4c145ad212381e89d4b6dc4">memory</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#endif</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
<div class="ttc" id="namespaceos_html_af0898f40a19c3804347e30b9efa0984a"><div class="ttname"><a href="namespaceos.html#af0898f40a19c3804347e30b9efa0984a">os::pagesize</a></div><div class="ttdeci">size_t pagesize()</div><div class="ttdef"><b>Definition:</b> pagesize.hpp:24</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="classResult_html"><div class="ttname"><a href="classResult.html">Result</a></div><div class="ttdef"><b>Definition:</b> check.hpp:30</div></div>
<div class="ttc" id="structos_1_1Memory_html_a99857d2d965390fe2e88f417037dce55"><div class="ttname"><a href="structos_1_1Memory.html#a99857d2d965390fe2e88f417037dce55">os::Memory::freeSwap</a></div><div class="ttdeci">Bytes freeSwap</div><div class="ttdef"><b>Definition:</b> os.hpp:39</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/future_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/future_8hpp_source.html b/content/api/latest/c++/future_8hpp_source.html
index b16b562..b831670 100644
--- a/content/api/latest/c++/future_8hpp_source.html
+++ b/content/api/latest/c++/future_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="classprocess_1_1Future_html_a68f241961e700d0cecf982d9cc0043d7"><div class="ttname"><a href="classprocess_1_1Future.html#a68f241961e700d0cecf982d9cc0043d7">process::Future::isReady</a></div><div class="ttdeci">bool isReady() const </div><div class="ttdef"><b>Definition:</b> future.hpp:1220</div></div>
<div class="ttc" id="classprocess_1_1WeakFuture_html_abc498bf35827627ae815540181e073a9"><div class="ttname"><a href="classprocess_1_1WeakFuture.html#abc498bf35827627ae815540181e073a9">process::WeakFuture::WeakFuture</a></div><div class="ttdeci">WeakFuture(const Future< T > &future)</div><div class="ttdef"><b>Definition:</b> future.hpp:646</div></div>
<div class="ttc" id="namespaceos_html_aa9ac22b4028f187826a9861373006abf"><div class="ttname"><a href="namespaceos.html#aa9ac22b4028f187826a9861373006abf">os::strerror</a></div><div class="ttdeci">std::string strerror(int errno_)</div><div class="ttdoc">A thread-safe version of strerror. </div><div class="ttdef"><b>Definition:</b> strerror.hpp:30</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="namespaceprocess_html_a62d5333e8ec1817c249cf83e15d568b4"><div class="ttname"><a href="namespaceprocess.html#a62d5333e8ec1817c249cf83e15d568b4">process::f</a></div><div class="ttdeci">F && f</div><div class="ttdef"><b>Definition:</b> defer.hpp:270</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/globals_func.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/globals_func.html b/content/api/latest/c++/globals_func.html
index 081a6b5..0c5d3f9 100644
--- a/content/api/latest/c++/globals_func.html
+++ b/content/api/latest/c++/globals_func.html
@@ -313,12 +313,14 @@
: <a class="el" href="path_8hpp.html#a71e4826c717e331e929eec4f3f01998d">path.hpp</a>
</li>
<li>operator<<()
-: <a class="el" href="hashmap_8hpp.html#a9c94b6ec332534717bbc65377844a9fb">hashmap.hpp</a>
-, <a class="el" href="interval_8hpp.html#aa84764c6f588f3437249eaada5808dab">interval.hpp</a>
+: <a class="el" href="interval_8hpp.html#acd3d17d3107094a6ad8ac87c99d85e17">interval.hpp</a>
+, <a class="el" href="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0">errorbase.hpp</a>
, <a class="el" href="duration_8hpp.html#aae42b4c6bc1b2a3b493f1c306afe7522">duration.hpp</a>
-, <a class="el" href="3rdparty_2stout_2include_2stout_2version_8hpp.html#a6868b46a8ba132a83ed5fc72c91bcdb0">version.hpp</a>
-, <a class="el" href="variant_8hpp.html#a3ff1e8a4b8f3e1f085626f42351f8550">variant.hpp</a>
+, <a class="el" href="interval_8hpp.html#aa84764c6f588f3437249eaada5808dab">interval.hpp</a>
+, <a class="el" href="hashmap_8hpp.html#a9c94b6ec332534717bbc65377844a9fb">hashmap.hpp</a>
, <a class="el" href="path_8hpp.html#a2ec9a8258175592b62eb0df607badc6d">path.hpp</a>
+, <a class="el" href="variant_8hpp.html#a3ff1e8a4b8f3e1f085626f42351f8550">variant.hpp</a>
+, <a class="el" href="3rdparty_2stout_2include_2stout_2version_8hpp.html#a6868b46a8ba132a83ed5fc72c91bcdb0">version.hpp</a>
, <a class="el" href="bytes_8hpp.html#a5e87dde1f7de1550205527b0a837d2a1">bytes.hpp</a>
, <a class="el" href="3rdparty_2stout_2include_2stout_2cache_8hpp.html#ab9400877fa66b8546bc4d4711f86c144">cache.hpp</a>
</li>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/globals_o.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/globals_o.html b/content/api/latest/c++/globals_o.html
index 86dc5f6..dbf027c 100644
--- a/content/api/latest/c++/globals_o.html
+++ b/content/api/latest/c++/globals_o.html
@@ -120,14 +120,16 @@
: <a class="el" href="path_8hpp.html#a71e4826c717e331e929eec4f3f01998d">path.hpp</a>
</li>
<li>operator<<()
-: <a class="el" href="variant_8hpp.html#a3ff1e8a4b8f3e1f085626f42351f8550">variant.hpp</a>
+: <a class="el" href="errorbase_8hpp.html#ae45822aef5901508793415fff642bef0">errorbase.hpp</a>
, <a class="el" href="bytes_8hpp.html#a5e87dde1f7de1550205527b0a837d2a1">bytes.hpp</a>
, <a class="el" href="3rdparty_2stout_2include_2stout_2cache_8hpp.html#ab9400877fa66b8546bc4d4711f86c144">cache.hpp</a>
, <a class="el" href="duration_8hpp.html#aae42b4c6bc1b2a3b493f1c306afe7522">duration.hpp</a>
-, <a class="el" href="interval_8hpp.html#aa84764c6f588f3437249eaada5808dab">interval.hpp</a>
-, <a class="el" href="path_8hpp.html#a2ec9a8258175592b62eb0df607badc6d">path.hpp</a>
-, <a class="el" href="hashmap_8hpp.html#a9c94b6ec332534717bbc65377844a9fb">hashmap.hpp</a>
, <a class="el" href="3rdparty_2stout_2include_2stout_2version_8hpp.html#a6868b46a8ba132a83ed5fc72c91bcdb0">version.hpp</a>
+, <a class="el" href="hashmap_8hpp.html#a9c94b6ec332534717bbc65377844a9fb">hashmap.hpp</a>
+, <a class="el" href="interval_8hpp.html#acd3d17d3107094a6ad8ac87c99d85e17">interval.hpp</a>
+, <a class="el" href="path_8hpp.html#a2ec9a8258175592b62eb0df607badc6d">path.hpp</a>
+, <a class="el" href="variant_8hpp.html#a3ff1e8a4b8f3e1f085626f42351f8550">variant.hpp</a>
+, <a class="el" href="interval_8hpp.html#aa84764c6f588f3437249eaada5808dab">interval.hpp</a>
</li>
<li>operator<=()
: <a class="el" href="path_8hpp.html#ae108a381c03097c921ee17af0f248c02">path.hpp</a>
[21/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/pstree_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/pstree_8hpp_source.html b/content/api/latest/c++/pstree_8hpp_source.html
index dbb3b20..b1bad62 100644
--- a/content/api/latest/c++/pstree_8hpp_source.html
+++ b/content/api/latest/c++/pstree_8hpp_source.html
@@ -52,7 +52,7 @@
<div class="title">pstree.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="pstree_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_PSTREE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_PSTREE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> 
;<span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"
><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.htm
l#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Returns a process tree rooted at the specified pid using the</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// specified list of processes (or an error if one occurs).</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespaceos.html#ac324ef4f356d10686ce7024257251443"> 37</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<ProcessTree></a> <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>
60; <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> std::list<Process>& <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::list<ProcessTree> <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">children</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& <a class="code" href="namespaceprocess.html">process</a>, processes) {</div><div class="line"><a name="l00043"><
/a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (process.<a class="code" href="structos_1_1Process.html#a3865855abd794165fef4465bb3c7eb54">parent</a> == pid) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classTry.html">Try<ProcessTree></a> tree = <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>, processes);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (tree.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(tree.<a class="code" href="classTry.html#aec4a11
ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  children.push_back(tree.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& process, processes) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (process.<a class="code" href="struc
tos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a> == pid) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="classos_1_1ProcessTree.html">ProcessTree</a>(process, children);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"No process found at "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><
a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Returns a process tree for the specified pid (or all processes if</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// pid is none or the current process if pid is 0).</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespaceos.html#a0b553259c4b9eaee7c3228502fa2406b"> 64</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<ProcessTree></a> <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(<a class="code" href="classOption.html">Option<pid_t></a> pid = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00065"><
/a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (pid.isNone()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  pid = 1;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid.get() == 0) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  pid = getpid();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b400
84d3">processes</a> = <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class=
"code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(pid.get(), processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Returns the minimum list of process trees that include all of the</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// specified pids using the specified list of processes.</span></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f"> 84</a></span> <span class="keyword">inline</span> <a class="code" h
ref="classTry.html">Try<std::list<ProcessTree></a>> <a class="code" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f">pstrees</a>(</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> std::set<pid_t>& <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> std::list<Process>& <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  std::list<ProcessTree> trees;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> 
; <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, pids) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// First, check if the pid is already connected to one of the</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// process trees we've constructed.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">bool</span> disconnected = <span class="keyword">true</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classos_1_1ProcessTree.html">ProcessTree</a>& tree, trees) {</div><div class="line"><a name="l00095"></a><span class="line
no"> 95</span>  <span class="keywordflow">if</span> (tree.<a class="code" href="classos_1_1ProcessTree.html#aba099c3841f5501ad764e9c115b7a852">contains</a>(pid)) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  disconnected = <span class="keyword">false</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classTry.html">Try<ProcessTree
></a> tree = <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(pid, processes);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (tree.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(tree.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Now see if any of the existing process trees are actually</span></div><div class="line"><a name="l001
08"></a><span class="lineno"> 108</span>  <span class="comment">// contained within the process tree we just created and only</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// include the disjoint process trees.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// C++11:</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// trees = trees.filter([](const ProcessTree& t) {</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// return tree.get().contains(t);</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// });</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::list<ProcessTree>
; trees_ = trees;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  trees.clear();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classos_1_1ProcessTree.html">ProcessTree</a>& t, trees_) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (tree-><a class="code" href="classos_1_1ProcessTree.html#aba099c3841f5501ad764e9c115b7a852">contains</a>(t.<a class="code" href="classos_1_1ProcessTree.html#a866cebd58c7873e1892ce34ebde52bd4">process</a>.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>)) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00119"></a><span class="lin
eno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  trees.push_back(t);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  trees.push_back(tree.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> trees;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><di
v class="line"><a name="l00129"></a><span class="lineno"> 129</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#endif // __STOUT_OS_PSTREE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<a href="pstree_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_PSTREE_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_PSTREE_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <list></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> 
;<span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="option_8hpp.html">stout/option.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"
><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <<a class="code" href="stout_2include_2stout_2os_2process_8hpp.html">stout/os/process.hpp</a>></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="namespaceos.html">os</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.htm
l#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Returns a process tree rooted at the specified pid using the</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// specified list of processes (or an error if one occurs).</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespaceos.html#ac324ef4f356d10686ce7024257251443"> 37</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<ProcessTree></a> <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>
60; <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">const</span> std::list<Process>& <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::list<ProcessTree> <a class="code" href="namespaceos.html#a363f959e94e301ec8ec483e3c22258a6">children</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& <a class="code" href="namespaceprocess.html">process</a>, processes) {</div><div class="line"><a name="l00043"><
/a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (process.<a class="code" href="structos_1_1Process.html#a3865855abd794165fef4465bb3c7eb54">parent</a> == pid) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classTry.html">Try<ProcessTree></a> tree = <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(process.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>, processes);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (tree.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(tree.<a class="code" href="classTry.html#aec4a11
ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  children.push_back(tree.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="structos_1_1Process.html">Process</a>& process, processes) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span> (process.<a class="code" href="struc
tos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a> == pid) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <a class="code" href="classos_1_1ProcessTree.html">ProcessTree</a>(process, children);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"No process found at "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(pid));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><
a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Returns a process tree for the specified pid (or all processes if</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// pid is none or the current process if pid is 0).</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespaceos.html#a0b553259c4b9eaee7c3228502fa2406b"> 64</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<ProcessTree></a> <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(<a class="code" href="classOption.html">Option<pid_t></a> pid = <a class="code" href="structNone.html">None</a>())</div><div class="line"><a name="l00065"><
/a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span> (pid.isNone()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  pid = 1;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid.get() == 0) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  pid = getpid();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">const</span> <a class="code" href="classTry.html">Try<std::list<Process></a>> <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b400
84d3">processes</a> = <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">os::processes</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (processes.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(processes.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <a class=
"code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(pid.get(), processes.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Returns the minimum list of process trees that include all of the</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// specified pids using the specified list of processes.</span></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f"> 84</a></span> <span class="keyword">inline</span> <a class="code" h
ref="classTry.html">Try<std::list<ProcessTree></a>> <a class="code" href="namespaceos.html#ae610a9542f877147b89a2a6b7745c80f">pstrees</a>(</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> std::set<pid_t>& <a class="code" href="namespaceos.html#a42af1cab63434cedf2b698cd6f49f073">pids</a>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">const</span> std::list<Process>& <a class="code" href="namespaceos.html#aa98ca8ac255e2b9c689979a1b40084d3">processes</a>)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  std::list<ProcessTree> trees;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> 
; <span class="keywordflow">foreach</span> (<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#ab03ced250ed239bc3b50b669493997f9">pid_t</a> pid, pids) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// First, check if the pid is already connected to one of the</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// process trees we've constructed.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">bool</span> disconnected = <span class="keyword">true</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classos_1_1ProcessTree.html">ProcessTree</a>& tree, trees) {</div><div class="line"><a name="l00095"></a><span class="line
no"> 95</span>  <span class="keywordflow">if</span> (tree.<a class="code" href="classos_1_1ProcessTree.html#aba099c3841f5501ad764e9c115b7a852">contains</a>(pid)) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  disconnected = <span class="keyword">false</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span> (disconnected) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classTry.html">Try<ProcessTree
></a> tree = <a class="code" href="namespaceos.html#ac324ef4f356d10686ce7024257251443">pstree</a>(pid, processes);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (tree.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(tree.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Now see if any of the existing process trees are actually</span></div><div class="line"><a name="l001
08"></a><span class="lineno"> 108</span>  <span class="comment">// contained within the process tree we just created and only</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// include the disjoint process trees.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// C++11:</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// trees = trees.filter([](const ProcessTree& t) {</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="comment">// return tree.get().contains(t);</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// });</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::list<ProcessTree>
; trees_ = trees;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  trees.clear();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> <a class="code" href="classos_1_1ProcessTree.html">ProcessTree</a>& t, trees_) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (tree-><a class="code" href="classos_1_1ProcessTree.html#aba099c3841f5501ad764e9c115b7a852">contains</a>(t.<a class="code" href="classos_1_1ProcessTree.html#a866cebd58c7873e1892ce34ebde52bd4">process</a>.<a class="code" href="structos_1_1Process.html#a8c68e0a8c8693f2acacf0f428ea0a493">pid</a>)) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00119"></a><span class="lin
eno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  trees.push_back(t);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  trees.push_back(tree.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>());</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> trees;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><di
v class="line"><a name="l00129"></a><span class="lineno"> 129</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#endif // __STOUT_OS_PSTREE_HPP__</span></div><div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option< pid_t ></a></div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
[43/48] mesos-site git commit: Updated the website built from mesos
SHA: c020a13.
Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2ip_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2ip_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2ip_8hpp_source.html
index 5cca402..8fc5430 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2ip_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2ip_8hpp_source.html
@@ -53,7 +53,7 @@
</div><!--header-->
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2windows_2ip_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span
> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">
12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_IP_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_WINDOWS_IP_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.
hpp</a>></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <<a class="code" href="none_8hpp.html">stout/none.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="result_8hpp.html">stout/result.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span> <span class="comment">// For `iphlpapi.h`.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"
></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<IP::Network></a> <a class="code" href="classnet_1_1IP_1_1Network.html#a2fddda437abb4b15242e00d0563b9617">IP::Network::fromLinkDevice</a>(</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">int</span> family)</div><div class="line
"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  DWORD result;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  ULONG <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = 0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// TODO(josephw): `GetAdaptersInfo` will only return IPv4 results.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// To get IPv6 results, we should look into `GetAdaptersAddresses`.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span> (family != AF_INET) {</div><div class="line"><a name="l00038"></a><span class="
lineno"> 38</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unsupported family type: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(family));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// Indicates whether the link device is found or not.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Make
an initial call to GetAdaptersInfo to get structure size.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (GetAdaptersInfo(<span class="keyword">nullptr</span>, &size) != ERROR_BUFFER_OVERFLOW) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Calling GetAdaptersInfo returned unexpected result"</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<IP_ADAPTER_INFO> adapter_info(size / <span class="keyword">sizeof</span>(IP_ADAPTER_INFO));</div><div class="line"><a name="l00050"></a><span class="line
no"> 50</span>  result = GetAdaptersInfo(</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  static_cast<PIP_ADAPTER_INFO>(adapter_info.data()),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  &size);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span> (result != NO_ERROR) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(result, <span class="stringliteral">"GetAdaptersInfo failed"</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name
="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">foreach</span>(<span class="keyword">const</span> IP_ADAPTER_INFO& ip_adapter, adapter_info) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span> (!strcmp(ip_adapter.AdapterName, name.c_str())) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  found = <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="classnet_1_1IP.html#a59c961e993728ab3dc969249ca610417">IP</a> <a class="code" href="classnet_1_1IP_1_1Network.html#a695af4d391431eaf349b81615baf90de">address</a> = <a class="code" href="classnet_1_1IP.html#a29469a2770ed1c02f447470712158d0e">IP::parse</a>(ip_adapter.IpAddressList.IpAddress.String).get();</div><div cl
ass="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span> (ip_adapter.IpAddressList.IpMask.String[0] != <span class="charliteral">'\0'</span>) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="classnet_1_1IP.html#a59c961e993728ab3dc969249ca610417">IP</a> <a class="code" href="classnet_1_1IP_1_1Network.html#a6b8b0d0e7dfb45cf184e547428376b02">netmask</a> = <a class="code" href="classnet_1_1IP.html#a29469a2770ed1c02f447470712158d0e">IP::parse</a>(ip_adapter.IpAddressList.IpMask.String).get();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classTry.html">Try<IP::Network></a> network = <a class="code" href="classnet_1_1IP_1_1N
etwork.html#aae567f80d6cee424de7a5ddaf4fcc912">IP::Network::create</a>(address, netmask);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span> (network.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(network.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">return</span> network.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div
class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Note that this is the case where netmask is not specified.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// We've seen such cases when VPN is used. In that case, a</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// default /32 prefix for IPv4 and /64 for IPv6 is used.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> <a class="code" href="classnet_1_1IP_1_1Network.html#a4058bf3b6ef0142f5f1fd0827171fcba">prefix</a> = (family == AF_INET ? 32 : 64);</div><div class="line"><a name="l0007
9"></a><span class="lineno"> 79</span>  <a class="code" href="classTry.html">Try<IP::Network></a> network = <a class="code" href="classnet_1_1IP_1_1Network.html#aae567f80d6cee424de7a5ddaf4fcc912">IP::Network::create</a>(address, prefix);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span> (network.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(network.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84<
/span>  <span class="keywordflow">return</span> network.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span> (!found) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Cannot find the link device"</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l
00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#endif // __STOUT_WINDOWS_IP_HPP__</span></div><div class="ttc" id="classnet_1_1IP_1_1Network_html_a695af4d391431eaf349b81615baf90de"><div class="ttname"><a href="classnet_1_1IP_1_1Network.html#a695af4d391431eaf349b81615baf90de">net::IP::Network::address</a></div><div class="ttdeci">IP address() const </div><div class="ttdef"><b>Definition:</b> ip.hpp:261<
/div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2net_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2net_8hpp_source.html b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2net_8hpp_source.html
index d1f1868..38df166 100644
--- a/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2net_8hpp_source.html
+++ b/content/api/latest/c++/3rdparty_2stout_2include_2stout_2windows_2net_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="3rdparty_2stout_2include_2stout_2windows_2net_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</spa
n> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno">
12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_WINDOWS_NET_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_WINDOWS_NET_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span
class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <<a class="code" href="foreach_8hpp.html">stout/foreach.hpp</a>></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="nothing_8hpp.html">stout/nothing.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="stringify_8hpp.html">stout/stringify.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"
>#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span> <span class="comment">// For `iphlpapi.h`.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <<a class="code" href="windows_2os_8hpp.html">stout/windows/os.hpp</a>></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">namespace </span><a class="code" href="namespacenet.html">net</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">inline</
span> <span class="keyword">struct </span>addrinfoW <a class="code" href="namespacenet.html#a53ce199fa12dea2d59df0ddfd1f04acd">createAddrInfo</a>(int socktype, int family, int <a class="code" href="namespaceflags.html">flags</a>)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">struct </span>addrinfoW addr;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  memset(&addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  addr.ai_socktype = socktype;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  addr.ai_family = family;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  addr.ai_flags |= <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae
85c6">flags</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> addr;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="namespacenet.html#acbd0295065ada40c7ee318bc115117e3"> 44</a></span> <span class="keyword">inline</span> <a class="code" href="classError.html">Error</a> <a class="code" href="namespacenet.html#acbd0295065ada40c7ee318bc115117e3">GaiError</a>(<span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a>)</div><div class=
"line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(std::wstring(gai_strerrorW(error))));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Returns a Try of the hostname for the provided IP. If the hostname</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// cannot be resolved, then a string version of the IP address is</span></div><div class
="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// returned.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// TODO(benh): Merge with `net::hostname`.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacenet.html#a9228d72b9850d1b39d54b5784068fa1f">getHostname</a>(<span class="keyword">const</span> <a class="code" href="classnet_1_1IP.html">IP</a>& ip)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">struct </span>sockaddr_storage storage;</div><div class="
line"><a name="l00058"></a><span class="lineno"> 58</span>  memset(&storage, 0, <span class="keyword">sizeof</span>(storage));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">switch</span> (ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>()) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> AF_INET: {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">struct </span>sockaddr_in addr;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  memset(&addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  addr.sin_family = AF_INET;</di
v><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  addr.sin_addr = ip.<a class="code" href="classnet_1_1IP.html#a9b2b8da4b79c15e6632a9305a3d4c7cb">in</a>().get();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  addr.sin_port = 0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  memcpy(&storage, &addr, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> AF_INET6: {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> 
<span class="keyword">struct </span>sockaddr_in6 addr;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  memset(&addr, 0, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  addr.sin6_family = AF_INET6;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  addr.sin6_addr = ip.<a class="code" href="classnet_1_1IP.html#ad81fc914433c4874645a406471f57b34">in6</a>().get();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  addr.sin6_port = 0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  memcpy(&storage, &addr, <span class="keyword">sizeof</span>(addr));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywo
rdflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a>(<span class="stringliteral">"Unsupported family type: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>()));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"
> 86</span>  <span class="keywordtype">wchar_t</span> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>[<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afd80ecbe3170ca4fc85b65cda8659f82">MAXHOSTNAMELEN</a>];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  socklen_t length;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>() == AF_INET) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  length = <span class="keyword">sizeof</span>(<span class="keyword">struct </span>sockaddr_in);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">else</s
pan> <span class="keywordflow">if</span> (ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>() == AF_INET6) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  length = <span class="keyword">sizeof</span>(<span class="keyword">struct </span>sockaddr_in6);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unknown address family: "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(ip.<a class="code" href="classnet_1_1IP.html#ac7007d7cc8e87925e19d60515bf28c03">family</a>()));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class=
"line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> = GetNameInfoW(</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  (<span class="keyword">struct</span> sockaddr*) &storage,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  length,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  hostname,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html#afd80ecbe3170ca4fc85b65cda8659f82">MAXHOSTNAMELEN</a>,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="ke
yword">nullptr</span>,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  0,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#acbd0295065ada40c7ee318bc115117e3">GaiError</a>(error);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="namespacens.html#a28116b46e6
543597a11733424cd1aa20">stringify</a>(std::wstring(hostname));</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Returns a Try of the IP for the provided hostname or an error if no IP is</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// obtained.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<IP></a> <a class="code" href="namespacenet.html#aa8c693ebde304b17ed7e1d55cd77121a">getIP</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacenet.html#a28018530986e91a
179ea6239fdf0a447">hostname</a>, <span class="keywordtype">int</span> family = AF_UNSPEC)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">struct </span>addrinfoW hints = <a class="code" href="namespacenet.html#a53ce199fa12dea2d59df0ddfd1f04acd">createAddrInfo</a>(SOCK_STREAM, family, 0);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">struct </span>addrinfoW* result = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">int</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1cni_1_1spec.html#ae58e703656ab4a1bd5d9870441236727">error</a> =</div><div class="line"><a name="l00122"></a><span clas
s="lineno"> 122</span>  GetAddrInfoW(wide_stringify(hostname).data(), <span class="keyword">nullptr</span>, &hints, &result);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (error != 0) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenet.html#acbd0295065ada40c7ee318bc115117e3">GaiError</a>(error);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span> (result->ai_addr == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00129"></a><span clas
s="lineno"> 129</span>  FreeAddrInfoW(result);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"No addresses found"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classTry.html">Try<IP></a> ip = <a class="code" href="classnet_1_1IP.html#ada206eb1ab14c032f071daf9b8c1b96c">IP::create</a>(*result->ai_addr);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span> (ip.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1
651b043a276">isError</a>()) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  FreeAddrInfoW(result);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Unsupported family type"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  FreeAddrInfoW(result);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> ip.<a class="code" href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">get</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> }</div><div class="line"><a name="l0
0143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// Returns the names of all the link devices in the system.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">//</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// NOTE: On Windows, the device names are GUID's which are not easily</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// accessible via any command line tools.</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">//</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// NOTE: This fu
nction only returns IPv4 info and does not return any</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// info about the loopback interface.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::set<std::string></a>> <a class="code" href="namespacenet.html#a308dd33768b3b5ce01dc7a5e4fa1f2d1">links</a>()</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  DWORD result;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  ULONG <a class="code" href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">size</a> = 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><
span class="lineno"> 157</span>  <span class="comment">// Make an initial call to GetAdaptersInfo to get structure size.</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span> (GetAdaptersInfo(<span class="keyword">nullptr</span>, &size) != ERROR_BUFFER_OVERFLOW) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(<span class="stringliteral">"Calling GetAdaptersInfo returned unexpected result"</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  std::set<std::string> names;</div><div class="line"><a name="l00163"></a><span class="lineno">
163</span>  std::vector<IP_ADAPTER_INFO> adapter_info(size / <span class="keyword">sizeof</span>(IP_ADAPTER_INFO));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  result = GetAdaptersInfo(</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  static_cast<PIP_ADAPTER_INFO>(adapter_info.data()),</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  &size);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (result != NO_ERROR) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>(result, <span class="stringliteral">"GetAdaptersInfo failed"</span>);</div><div c
lass="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> IP_ADAPTER_INFO& ip_adapter, adapter_info) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  names.insert(ip_adapter.AdapterName);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> names;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a nam
e="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespacenet.html#a28018530986e91a179ea6239fdf0a447">hostname</a>()</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos_1_1internal.html#a02c567b1b6bb441a3a29433a126cedec">os::internal::nodename</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span c
lass="comment">// Returns a `Try` of the result of attempting to set the `hostname`.</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacenet.html#a804670c0d91cb5433d021ede36dfc341">setHostname</a>(<span class="keyword">const</span> std::string& hostname)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span> (::SetComputerNameW(wide_stringify(hostname).data()) == 0) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> <a class="code" href="classWindowsError.html">WindowsError</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a
name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> } <span class="comment">// namespace net {</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor">#endif // __STOUT_WINDOWS_NET_HPP__</span></div><div class="ttc" id="namespacenet_html_a804670c0d91cb5433d021ede36dfc341"><div class="ttname"><a href="namespacenet.html#a804670c0d91cb5433d021ede36dfc341">net::setHostname</a></div><div class="ttdeci">Try< Not
hing > setHostname(const std::string &hostname)</div><div class="ttdef"><b>Definition:</b> net.hpp:179</div></div>
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>
<div class="ttc" id="namespaceos_1_1stat_html_a7a116891923bc8b5d8c50f78da8657be"><div class="ttname"><a href="namespaceos_1_1stat.html#a7a116891923bc8b5d8c50f78da8657be">os::stat::size</a></div><div class="ttdeci">Try< Bytes > size(const std::string &path, const FollowSymlink follow=FollowSymlink::FOLLOW_SYMLINK)</div><div class="ttdef"><b>Definition:</b> stat.hpp:119</div></div>
<div class="ttc" id="classTry_html_a8bc7f43e75a47111ea18e9c83b007be5"><div class="ttname"><a href="classTry.html#a8bc7f43e75a47111ea18e9c83b007be5">Try::get</a></div><div class="ttdeci">T & get()&</div><div class="ttdef"><b>Definition:</b> try.hpp:73</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/Nodes.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Nodes.xml b/content/api/latest/c++/Nodes.xml
index 7d13b5a..fb1c401 100644
--- a/content/api/latest/c++/Nodes.xml
+++ b/content/api/latest/c++/Nodes.xml
@@ -56414,6 +56414,11 @@
</Node>
</Subnodes>
</Node>
+ <Node>
+ <Name>operator<<</Name>
+ <Path>errorbase_8hpp.html</Path>
+ <Anchor>ae45822aef5901508793415fff642bef0</Anchor>
+ </Node>
</Subnodes>
</Node>
<Node>
@@ -56802,7 +56807,7 @@
<Node>
<Name>AssertSome</Name>
<Path>stout_2include_2stout_2gtest_8hpp.html</Path>
- <Anchor>a9c42a43dc448160ca174817baa269aaf</Anchor>
+ <Anchor>aa8a6bf7719a389a661a3580da70a71fd</Anchor>
</Node>
<Node>
<Name>AssertSome</Name>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/Tokens.xml
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/Tokens.xml b/content/api/latest/c++/Tokens.xml
index 43140d7..cf8c855 100644
--- a/content/api/latest/c++/Tokens.xml
+++ b/content/api/latest/c++/Tokens.xml
@@ -2944,7 +2944,7 @@
<Type>func</Type>
</TokenIdentifier>
<Path>stout_2include_2stout_2gtest_8hpp.html</Path>
- <Anchor>a9c42a43dc448160ca174817baa269aaf</Anchor>
+ <Anchor>aa8a6bf7719a389a661a3580da70a71fd</Anchor>
<DeclaredIn>gtest.hpp</DeclaredIn>
</Token>
<Token>
@@ -4620,6 +4620,16 @@
</Token>
<Token>
<TokenIdentifier>
+ <Name>operator<<</Name>
+ <APILanguage>c</APILanguage>
+ <Type>func</Type>
+ </TokenIdentifier>
+ <Path>errorbase_8hpp.html</Path>
+ <Anchor>ae45822aef5901508793415fff642bef0</Anchor>
+ <DeclaredIn>errorbase.hpp</DeclaredIn>
+ </Token>
+ <Token>
+ <TokenIdentifier>
<Name>EXIT</Name>
<APILanguage>unknown</APILanguage>
<Type>macro</Type>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/access_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/access_8hpp_source.html b/content/api/latest/c++/access_8hpp_source.html
index 393df72..6b9e1f9 100644
--- a/content/api/latest/c++/access_8hpp_source.html
+++ b/content/api/latest/c++/access_8hpp_source.html
@@ -54,7 +54,7 @@
<div class="contents">
<a href="access_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span>
</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// limitations under the License.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line
"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#ifndef __STOUT_OS_ACCESS_HPP__</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define __STOUT_OS_ACCESS_HPP__</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <<a class="code" href="error_8hpp.html">stout/error.hpp</a>></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <<a class="code" href="try_8hpp.html">stout/try.hpp</a>></span></div><div class="line"><a nam
e="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <<a class="code" href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">stout/windows.hpp</a>></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <<a class="code" href="longpath_8hpp.html">stout/internal/windows/longpath.hpp</a>></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif // __WINDOWS__</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code"
href="namespaceos.html">os</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3"> 28</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<bool></a> <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">access</a>(<span class="keyword">const</span> std::string& <a class="code" href="namespacepath.html">path</a>, <span class="keywordtype">int</span> how)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class=
"preprocessor">#ifdef __WINDOWS__</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  std::wstring <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">longpath</a> = <a class="code" href="namespaceinternal_1_1windows.html#abd7dbdbc8d95626d0c66455078380aa1">::internal::windows::longpath</a>(path);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  result = ::_waccess(longpath.data(), how);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  result = <a class="code" href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">::access</a>(path.data(), how);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><
span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span> (result < 0) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span> (errno == EACCES) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <a class="code" href="classErrnoError.html">ErrnoError</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class
="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> } <span class="comment">// namespace os {</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif // __STOUT_OS_ACCESS_HPP__</span></div><div class="ttc" id="namespacepath_html"><div class="ttname"><a href="namespacepath.html">path</a></div><div class="ttdef"><b>Definition:</b> path.hpp:26</div></div>
<div class="ttc" id="classTry_html"><div class="ttname"><a href="classTry.html">Try</a></div><div class="ttdef"><b>Definition:</b> check.hpp:33</div></div>
-<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:49</div></div>
+<div class="ttc" id="classErrnoError_html"><div class="ttname"><a href="classErrnoError.html">ErrnoError</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:50</div></div>
<div class="ttc" id="namespaceos_html"><div class="ttname"><a href="namespaceos.html">os</a></div><div class="ttdef"><b>Definition:</b> posix_signalhandler.hpp:23</div></div>
<div class="ttc" id="3rdparty_2stout_2include_2stout_2windows_8hpp_html"><div class="ttname"><a href="3rdparty_2stout_2include_2stout_2windows_8hpp.html">windows.hpp</a></div></div>
<div class="ttc" id="namespaceos_html_a426a9c189f65b7e3f63e16eb11ec73c3"><div class="ttname"><a href="namespaceos.html#a426a9c189f65b7e3f63e16eb11ec73c3">os::access</a></div><div class="ttdeci">Try< bool > access(const std::string &path, int how)</div><div class="ttdef"><b>Definition:</b> access.hpp:28</div></div>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/d7774475/content/api/latest/c++/address_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/address_8hpp_source.html b/content/api/latest/c++/address_8hpp_source.html
index c246514..38dfbdf 100644
--- a/content/api/latest/c++/address_8hpp_source.html
+++ b/content/api/latest/c++/address_8hpp_source.html
@@ -58,7 +58,7 @@
<div class="ttc" id="classnet_1_1IPv6_html_aa10eb595a2c9e36a2c40d880dbe851f7"><div class="ttname"><a href="classnet_1_1IPv6.html#aa10eb595a2c9e36a2c40d880dbe851f7">net::IPv6::ANY</a></div><div class="ttdeci">static IPv6 ANY()</div><div class="ttdef"><b>Definition:</b> ip.hpp:386</div></div>
<div class="ttc" id="classprocess_1_1network_1_1Address_html_a65e3511ccaa4fe9e6794675cab161c4c"><div class="ttname"><a href="classprocess_1_1network_1_1Address.html#a65e3511ccaa4fe9e6794675cab161c4c">process::network::Address::create</a></div><div class="ttdeci">static Try< Address > create(const sockaddr_storage &storage)</div><div class="ttdef"><b>Definition:</b> address.hpp:293</div></div>
<div class="ttc" id="classprocess_1_1network_1_1unix_1_1Address_html_a93470f74fdd461facf698287be9a13fb"><div class="ttname"><a href="classprocess_1_1network_1_1unix_1_1Address.html#a93470f74fdd461facf698287be9a13fb">process::network::unix::Address::path</a></div><div class="ttdeci">std::string path() const </div><div class="ttdef"><b>Definition:</b> address.hpp:226</div></div>
-<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:35</div></div>
+<div class="ttc" id="classError_html"><div class="ttname"><a href="classError.html">Error</a></div><div class="ttdef"><b>Definition:</b> errorbase.hpp:36</div></div>
<div class="ttc" id="classnet_1_1IPv4_html"><div class="ttname"><a href="classnet_1_1IPv4.html">net::IPv4</a></div><div class="ttdef"><b>Definition:</b> ip.hpp:334</div></div>
<div class="ttc" id="classprocess_1_1network_1_1inet6_1_1Address_html_a3ca214d313d7d9b06e1bc049ce867fdf"><div class="ttname"><a href="classprocess_1_1network_1_1inet6_1_1Address.html#a3ca214d313d7d9b06e1bc049ce867fdf">process::network::inet6::Address::Address</a></div><div class="ttdeci">Address(const sockaddr_in6 &in6)</div><div class="ttdef"><b>Definition:</b> address.hpp:190</div></div>
<div class="ttc" id="abort_8hpp_html_a4d84a74fe6e4f84bc3d2f901b9e89f93"><div class="ttname"><a href="abort_8hpp.html#a4d84a74fe6e4f84bc3d2f901b9e89f93">ABORT</a></div><div class="ttdeci">#define ABORT(...)</div><div class="ttdef"><b>Definition:</b> abort.hpp:40</div></div>