http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/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 bc66b08..e133915 100644 --- a/content/api/latest/c++/module_2manager_8hpp_source.html +++ b/content/api/latest/c++/module_2manager_8hpp_source.html @@ -52,7 +52,7 @@ <div class="title">manager.hpp</div> </div> </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> +<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 `Hook` 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_1Mo duleManager.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>, mod uleBases) {</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="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="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 >`ModuleBase`.</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> veri fyIdenticalModule(</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="lin eno"> 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> moduleBases;< /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 loaded 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 class="linen o"> 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: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>
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemembers_c.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemembers_c.html b/content/api/latest/c++/namespacemembers_c.html index dc44df3..3da6f04 100644 --- a/content/api/latest/c++/namespacemembers_c.html +++ b/content/api/latest/c++/namespacemembers_c.html @@ -152,15 +152,9 @@ <li>checkBracketsMatching() : <a class="el" href="namespacestrings.html#a24c5a92c560245c3d96c3ee559d84f8b">strings</a> </li> -<li>checkInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#a0433104ba01994c3f1b8948b5a0975ff">mesos::internal::checks::validation</a> -</li> <li>checkpoint() : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192">mesos::internal::slave::state</a> -, <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a3c2fe175512a56ae2e3cd696306961ce">mesos::internal::slave::state::internal</a> -</li> -<li>checkStatusInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#a23cbf90199a74d315aba67135fbdc1d6">mesos::internal::checks::validation</a> +, <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a5e1e0e7948227db3dc2470f4792aee7d">mesos::internal::slave::state::internal</a> </li> <li>childMain() : <a class="el" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal</a> @@ -211,7 +205,7 @@ : <a class="el" href="namespacemesos_1_1internal_1_1xfs.html#a02c77f8c98b1d1764a5a638e4a27e712">mesos::internal::xfs</a> </li> <li>cloexec() -: <a class="el" href="namespaceos.html#a5a4254462f48e5b268065b862c97bf93">os</a> +: <a class="el" href="namespaceos.html#a7d71bda07a41304403b0e13aa47f0764">os</a> , <a class="el" href="namespaceprocess_1_1internal.html#a345a534b82b79bf20333fb6faef43e93">process::internal</a> </li> <li>clone() @@ -452,7 +446,7 @@ , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#abd98e21c010ffd222ea0553f76362d4f">mesos::internal::tests::v1</a> </li> <li>createContainerConfig() -: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#afc0baf70c6610ce0ccce0e556a4727cf">mesos::internal::tests::internal</a> +: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#ae06a22b6660e2f3d3e6b66c032f5963b">mesos::internal::tests::internal</a> </li> <li>createContainerInfo() : <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#ae22bdc6f560eb8e648ef875bde2cabc8">mesos::internal::tests::common</a> @@ -522,7 +516,7 @@ : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1paths.html#a42e0f2f261f2847ef32d633e9f94966e">mesos::internal::slave::paths</a> </li> <li>createExecutorInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#aa6cc33559f96bc2b0b5cc3e098d3daf2">mesos::internal::tests::common</a> +: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#a85cb52ecd85fa393c1a173e9bfbabee5">mesos::internal::tests::common</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#a1d89ea8fd0a176a5b25e672b0a88899a">mesos::internal::tests::internal</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#a0a4c3e164d6cd047ee8b9279ce91c5dc">mesos::internal::tests::v1</a> </li> @@ -570,7 +564,7 @@ : <a class="el" href="namespacemesos_1_1python.html#a88c25644f8837bfc76920f504a0e142d">mesos::python</a> </li> <li>createQuotaInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1quota.html#a771e86d8a90e4839be7549ae1b388e1a">mesos::internal::master::quota</a> +: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1quota.html#a858856c5b332d277d20be66515b44e19">mesos::internal::master::quota</a> </li> <li>createRange() : <a class="el" href="namespacemesos_1_1internal_1_1tests.html#aa3baef77e9071163d2e2dfb2b48798c1">mesos::internal::tests</a> @@ -604,14 +598,14 @@ , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#a2d5e39f4c7829de155a8c2fdc72bfeda">mesos::internal::tests::v1</a> </li> <li>createStatusUpdate() -: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#a05a7065043e2174de48a6e60b1a5b516">mesos::internal::protobuf</a> +: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#a58d7b5b72080e3e6a6332842b5ad5f0d">mesos::internal::protobuf</a> </li> <li>createSubject() : <a class="el" href="namespacemesos_1_1authorization.html#a876801d3f6c22d613cf83123c4598d5f">mesos::authorization</a> </li> <li>createTask() : <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#ac4ae9d9e44c7a92327e4cbd111a6bbd7">mesos::internal::protobuf</a> -, <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#a396b391f2eaac72764e650fd7d992f0b">mesos::internal::tests::common</a> +, <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#aec7c8f10d75fa5c1068f7fa36fe263e8">mesos::internal::tests::common</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#a48402bec0895e479cdd6a418a3fc7051">mesos::internal::tests::internal</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#a9037552b8a0fe03198b20008cc0ba01b">mesos::internal::tests::v1</a> </li> @@ -624,7 +618,7 @@ , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#ab2af45e2da4d8fc3ef09cc401dc30b74">mesos::internal::tests::v1</a> </li> <li>createTaskStatus() -: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#a9568ffade693b25df978d5512b079ab3">mesos::internal::protobuf</a> +: <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#ae7baced1ecb23a4fffbd6d7cf1ac90ce">mesos::internal::protobuf</a> </li> <li>createTaskUpdated() : <a class="el" href="namespacemesos_1_1internal_1_1protobuf_1_1master_1_1event.html#a6afd8a21c1cf14d6ab80abeb476720bc">mesos::internal::protobuf::master::event</a> http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemembers_func_c.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemembers_func_c.html b/content/api/latest/c++/namespacemembers_func_c.html index c976cfe..1afeef1 100644 --- a/content/api/latest/c++/namespacemembers_func_c.html +++ b/content/api/latest/c++/namespacemembers_func_c.html @@ -111,15 +111,9 @@ <li>checkBracketsMatching() : <a class="el" href="namespacestrings.html#a24c5a92c560245c3d96c3ee559d84f8b">strings</a> </li> -<li>checkInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#a0433104ba01994c3f1b8948b5a0975ff">mesos::internal::checks::validation</a> -</li> <li>checkpoint() : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192">mesos::internal::slave::state</a> -, <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#ab49e1bd389c03a72198895d11a263418">mesos::internal::slave::state::internal</a> -</li> -<li>checkStatusInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#a23cbf90199a74d315aba67135fbdc1d6">mesos::internal::checks::validation</a> +, <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a3c2fe175512a56ae2e3cd696306961ce">mesos::internal::slave::state::internal</a> </li> <li>childMain() : <a class="el" href="namespaceprocess_1_1internal.html#a902e2646d88c41ce674a3009cafe0aad">process::internal</a> @@ -202,7 +196,7 @@ <li>convert() : <a class="el" href="namespacegoogle_1_1protobuf.html#aee8eca8614f1e8ce851c94890b57482b">google::protobuf</a> , <a class="el" href="namespaceJSON_1_1internal.html#a7d41418bd16038130799016f35a50a50">JSON::internal</a> -, <a class="el" href="namespacemesos_1_1internal_1_1capabilities.html#aca66c3d57d203e5036cd0254e3aa6b35">mesos::internal::capabilities</a> +, <a class="el" href="namespacemesos_1_1internal_1_1capabilities.html#a58cf2124149a2b76257caa77e4bf0888">mesos::internal::capabilities</a> , <a class="el" href="namespacemesos_1_1internal_1_1rlimits.html#a58d493c51e5b73f17c642c114290b703">mesos::internal::rlimits</a> , <a class="el" href="namespaceprocess_1_1network.html#a9feb5b1e8c5dcbed7a790c68abb97a78">process::network</a> </li> @@ -399,7 +393,7 @@ : <a class="el" href="namespacemesos_1_1internal_1_1slave_1_1paths.html#a42e0f2f261f2847ef32d633e9f94966e">mesos::internal::slave::paths</a> </li> <li>createExecutorInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#a670c20d9dcd273993b028edc3c79f6a1">mesos::internal::tests::common</a> +: <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#aa6cc33559f96bc2b0b5cc3e098d3daf2">mesos::internal::tests::common</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#a1d89ea8fd0a176a5b25e672b0a88899a">mesos::internal::tests::internal</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#a0a4c3e164d6cd047ee8b9279ce91c5dc">mesos::internal::tests::v1</a> </li> @@ -447,7 +441,7 @@ : <a class="el" href="namespacemesos_1_1python.html#a88c25644f8837bfc76920f504a0e142d">mesos::python</a> </li> <li>createQuotaInfo() -: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1quota.html#a771e86d8a90e4839be7549ae1b388e1a">mesos::internal::master::quota</a> +: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1quota.html#a858856c5b332d277d20be66515b44e19">mesos::internal::master::quota</a> </li> <li>createRange() : <a class="el" href="namespacemesos_1_1internal_1_1tests.html#aa3baef77e9071163d2e2dfb2b48798c1">mesos::internal::tests</a> @@ -488,7 +482,7 @@ </li> <li>createTask() : <a class="el" href="namespacemesos_1_1internal_1_1protobuf.html#ac4ae9d9e44c7a92327e4cbd111a6bbd7">mesos::internal::protobuf</a> -, <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#a219c2fd0d7ae0f5f94798f4a89db9668">mesos::internal::tests::common</a> +, <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1common.html#a396b391f2eaac72764e650fd7d992f0b">mesos::internal::tests::common</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1internal.html#a48402bec0895e479cdd6a418a3fc7051">mesos::internal::tests::internal</a> , <a class="el" href="namespacemesos_1_1internal_1_1tests_1_1v1.html#a9037552b8a0fe03198b20008cc0ba01b">mesos::internal::tests::v1</a> </li> http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemembers_func_h.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemembers_func_h.html b/content/api/latest/c++/namespacemembers_func_h.html index 61fdb0e..ad1dd7b 100644 --- a/content/api/latest/c++/namespacemembers_func_h.html +++ b/content/api/latest/c++/namespacemembers_func_h.html @@ -89,9 +89,6 @@ <li>hdfs() : <a class="el" href="namespacemesos_1_1uri.html#a79465d71946616b655bbaa3f32cd7286">mesos::uri</a> </li> -<li>healthCheck() -: <a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#afe0e68b1703ce157198dd86e64ad4ea3">mesos::internal::checks::validation</a> -</li> <li>HELP() : <a class="el" href="namespaceprocess.html#a61f0548459d8e5a950dd91cfc2bd4aa7">process</a> </li> http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemembers_func_v.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemembers_func_v.html b/content/api/latest/c++/namespacemembers_func_v.html index 9b5411f..57e3a55 100644 --- a/content/api/latest/c++/namespacemembers_func_v.html +++ b/content/api/latest/c++/namespacemembers_func_v.html @@ -114,6 +114,12 @@ <li>validateCheck() : <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html#a50d3c2633e2d5f59120fd3f0f306fa9a">mesos::internal::master::validation::task::internal</a> </li> +<li>validateCheckInfo() +: <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#ab4a873e7843b216ed29213a6b6274456">mesos::internal::common::validation</a> +</li> +<li>validateCheckStatusInfo() +: <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#ad7ab4ade44899851f342897ef2152ab4">mesos::internal::common::validation</a> +</li> <li>validateCommandInfo() : <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#afb728578ef87e1dd707851482b14011b">mesos::internal::common::validation</a> </li> @@ -137,7 +143,8 @@ : <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#aeaeffec9d0ffa1ea785db0c712c9f0d7">mesos::internal::common::validation</a> </li> <li>validateHealthCheck() -: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html#af04d89fb9fd4909fc1c06a59ed4e5a5c">mesos::internal::master::validation::task::internal</a> +: <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#adef4a0723ebaf58e74a55808a3586742">mesos::internal::common::validation</a> +, <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html#af04d89fb9fd4909fc1c06a59ed4e5a5c">mesos::internal::master::validation::task::internal</a> </li> <li>validateID() : <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#a48a2225e397b2024f2a617a01636cb34">mesos::internal::common::validation</a> http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemembers_h.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemembers_h.html b/content/api/latest/c++/namespacemembers_h.html index 7784aab..461f5ed 100644 --- a/content/api/latest/c++/namespacemembers_h.html +++ b/content/api/latest/c++/namespacemembers_h.html @@ -92,9 +92,6 @@ <li>hdfs() : <a class="el" href="namespacemesos_1_1uri.html#a79465d71946616b655bbaa3f32cd7286">mesos::uri</a> </li> -<li>healthCheck() -: <a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#afe0e68b1703ce157198dd86e64ad4ea3">mesos::internal::checks::validation</a> -</li> <li>HELP() : <a class="el" href="namespaceprocess.html#a61f0548459d8e5a950dd91cfc2bd4aa7">process</a> </li> http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemembers_v.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemembers_v.html b/content/api/latest/c++/namespacemembers_v.html index ebc45fe..aac268a 100644 --- a/content/api/latest/c++/namespacemembers_v.html +++ b/content/api/latest/c++/namespacemembers_v.html @@ -117,6 +117,12 @@ <li>validateCheck() : <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html#a50d3c2633e2d5f59120fd3f0f306fa9a">mesos::internal::master::validation::task::internal</a> </li> +<li>validateCheckInfo() +: <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#ab4a873e7843b216ed29213a6b6274456">mesos::internal::common::validation</a> +</li> +<li>validateCheckStatusInfo() +: <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#ad7ab4ade44899851f342897ef2152ab4">mesos::internal::common::validation</a> +</li> <li>validateCommandInfo() : <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#afb728578ef87e1dd707851482b14011b">mesos::internal::common::validation</a> </li> @@ -140,7 +146,8 @@ : <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#aeaeffec9d0ffa1ea785db0c712c9f0d7">mesos::internal::common::validation</a> </li> <li>validateHealthCheck() -: <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html#af04d89fb9fd4909fc1c06a59ed4e5a5c">mesos::internal::master::validation::task::internal</a> +: <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#adef4a0723ebaf58e74a55808a3586742">mesos::internal::common::validation</a> +, <a class="el" href="namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html#af04d89fb9fd4909fc1c06a59ed4e5a5c">mesos::internal::master::validation::task::internal</a> </li> <li>validateID() : <a class="el" href="namespacemesos_1_1internal_1_1common_1_1validation.html#a48a2225e397b2024f2a617a01636cb34">mesos::internal::common::validation</a> http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemesos_1_1internal_1_1checks.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemesos_1_1internal_1_1checks.html b/content/api/latest/c++/namespacemesos_1_1internal_1_1checks.html index 59f6a34..b8be784 100644 --- a/content/api/latest/c++/namespacemesos_1_1internal_1_1checks.html +++ b/content/api/latest/c++/namespacemesos_1_1internal_1_1checks.html @@ -62,8 +62,6 @@ Namespaces</h2></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:namespacemesos_1_1internal_1_1checks_1_1runtime"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemesos_1_1internal_1_1checks_1_1runtime.html">runtime</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:namespacemesos_1_1internal_1_1checks_1_1validation"><td class="memItemLeft" align="right" valign="top">  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html">validation</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="nested-classes"></a> Classes</h2></td></tr> http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6f154e6/content/api/latest/c++/namespacemesos_1_1internal_1_1checks_1_1validation.html ---------------------------------------------------------------------- diff --git a/content/api/latest/c++/namespacemesos_1_1internal_1_1checks_1_1validation.html b/content/api/latest/c++/namespacemesos_1_1internal_1_1checks_1_1validation.html deleted file mode 100644 index 43a7c47..0000000 --- a/content/api/latest/c++/namespacemesos_1_1internal_1_1checks_1_1validation.html +++ /dev/null @@ -1,124 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> -<meta http-equiv="X-UA-Compatible" content="IE=9"/> -<meta name="generator" content="Doxygen 1.8.11"/> -<title>Apache Mesos: mesos::internal::checks::validation Namespace Reference</title> -<link href="tabs.css" rel="stylesheet" type="text/css"/> -<script type="text/javascript" src="jquery.js"></script> -<script type="text/javascript" src="dynsections.js"></script> -<link href="doxygen.css" rel="stylesheet" type="text/css" /> -</head> -<body> -<div id="top"><!-- do not remove this div, it is closed by doxygen! --> -<div id="titlearea"> -<table cellspacing="0" cellpadding="0"> - <tbody> - <tr style="height: 56px;"> - <td id="projectalign" style="padding-left: 0.5em;"> - <div id="projectname">Apache Mesos - </div> - </td> - </tr> - </tbody> -</table> -</div> -<!-- end header part --> -<!-- Generated by Doxygen 1.8.11 --> - <div id="navrow1" class="tabs"> - <ul class="tablist"> - <li><a href="index.html"><span>Main Page</span></a></li> - <li><a href="pages.html"><span>Related Pages</span></a></li> - <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> - <li><a href="annotated.html"><span>Classes</span></a></li> - <li><a href="files.html"><span>Files</span></a></li> - <li><a href="examples.html"><span>Examples</span></a></li> - </ul> - </div> - <div id="navrow2" class="tabs2"> - <ul class="tablist"> - <li><a href="namespaces.html"><span>Namespace List</span></a></li> - <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li> - </ul> - </div> -<div id="nav-path" class="navpath"> - <ul> -<li class="navelem"><a class="el" href="namespacemesos.html">mesos</a></li><li class="navelem"><a class="el" href="namespacemesos_1_1internal.html">internal</a></li><li class="navelem"><a class="el" href="namespacemesos_1_1internal_1_1checks.html">checks</a></li><li class="navelem"><a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html">validation</a></li> </ul> -</div> -</div><!-- top --> -<div class="header"> - <div class="summary"> -<a href="#func-members">Functions</a> </div> - <div class="headertitle"> -<div class="title">mesos::internal::checks::validation Namespace Reference</div> </div> -</div><!--header--> -<div class="contents"> -<table class="memberdecls"> -<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> -Functions</h2></td></tr> -<tr class="memitem:a0433104ba01994c3f1b8948b5a0975ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classOption.html">Option</a>< <a class="el" href="classError.html">Error</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#a0433104ba01994c3f1b8948b5a0975ff">checkInfo</a> (const CheckInfo &checkInfo)</td></tr> -<tr class="separator:a0433104ba01994c3f1b8948b5a0975ff"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a23cbf90199a74d315aba67135fbdc1d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classOption.html">Option</a>< <a class="el" href="classError.html">Error</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#a23cbf90199a74d315aba67135fbdc1d6">checkStatusInfo</a> (const CheckStatusInfo &checkStatusInfo)</td></tr> -<tr class="separator:a23cbf90199a74d315aba67135fbdc1d6"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:afe0e68b1703ce157198dd86e64ad4ea3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classOption.html">Option</a>< <a class="el" href="classError.html">Error</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemesos_1_1internal_1_1checks_1_1validation.html#afe0e68b1703ce157198dd86e64ad4ea3">healthCheck</a> (const HealthCheck &check)</td></tr> -<tr class="separator:afe0e68b1703ce157198dd86e64ad4ea3"><td class="memSeparator" colspan="2"> </td></tr> -</table> -<h2 class="groupheader">Function Documentation</h2> -<a class="anchor" id="a0433104ba01994c3f1b8948b5a0975ff"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classOption.html">Option</a><<a class="el" href="classError.html">Error</a>> mesos::internal::checks::validation::checkInfo </td> - <td>(</td> - <td class="paramtype">const CheckInfo & </td> - <td class="paramname"><em>checkInfo</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -</div> -</div> -<a class="anchor" id="a23cbf90199a74d315aba67135fbdc1d6"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classOption.html">Option</a><<a class="el" href="classError.html">Error</a>> mesos::internal::checks::validation::checkStatusInfo </td> - <td>(</td> - <td class="paramtype">const CheckStatusInfo & </td> - <td class="paramname"><em>checkStatusInfo</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -</div> -</div> -<a class="anchor" id="afe0e68b1703ce157198dd86e64ad4ea3"></a> -<div class="memitem"> -<div class="memproto"> - <table class="memname"> - <tr> - <td class="memname"><a class="el" href="classOption.html">Option</a><<a class="el" href="classError.html">Error</a>> mesos::internal::checks::validation::healthCheck </td> - <td>(</td> - <td class="paramtype">const HealthCheck & </td> - <td class="paramname"><em>check</em></td><td>)</td> - <td></td> - </tr> - </table> -</div><div class="memdoc"> - -</div> -</div> -</div><!-- contents --> -<!-- start footer part --> -<hr class="footer"/><address class="footer"><small> -Generated by  <a href="http://www.doxygen.org/index.html"> -<img class="footer" src="doxygen.png" alt="doxygen"/> -</a> 1.8.11 -</small></address> -</body> -</html>
